ZeroJudge F707: 幸運 7 (Lucky Seven)

小東喜歡到各地去旅遊,有一天他在一處叢林中冒險時,發現了一個不知名的村落,他發現這個村落中的數字比較相當特殊,於是他決定來研究一番。

這個村落認為 7 是一個非常吉祥的數字,所以他們的數字比較皆環繞在 7 的身上。

今天若有兩數字,則兩數字中:

  • 可以被 7 整除的比較大,如 140 比 52 大
  • 可以被 7 整除的數字中取 70 的餘數較大的比較大,如 28 會比 14 大
  • 不能被 7 整除的數字中取 77 的餘數較小的比較大,如 15 會比 16 和 68 大

現在小東會給你一些數字,請你幫小東找出最大的數字。

範例測資

範例測資範例測資
EOF 輸入,範圍介在 1 至 100000 之間,以數字 0 代表這一串數字的尾端
最多不超過 10 個數字,且 0 不列入須比較的範圍
依照該村落的數字比較大小規則,輸出給定數列中最大的數字
若有多個最大的數字,請輸出最前面那一個
7 14 28 028
7 77 777 07
52 140 0140
15 16 68 015

解題思路

第一個收的數字可以存在一個 Max 的變數中,之後再做 EOF一個一個和 Max 變數比較比較餘數大小時需使用大於等於或小於等於,這樣才可以將較前面的數字設為目前最大值

範例程式碼-ZeroJudge F707: 幸運 7 (Lucky Seven)

#include <iostream>
using namespace std;

int main() {
    int N, max;
    cin >> max;
    while (cin >> N && N != 0)
    {
        if (max % 7 != 0 && N % 7 == 0) max = N;
        else if (max % 7 == 0 && N % 7 != 0) continue;
        else if (max % 7 == 0 && N % 7 == 0)
        {
            if (max % 70 >= N % 70) continue;
            else max = N;
        }
        else
        {
            if (max % 77 <= N % 77) continue;
            else max = N;
        }
    }
    cout << max << "\n";
}

//ZeroJudge F707
//Dr. SeanXD

發佈留言