小東喜歡到各地去旅遊,有一天他在一處叢林中冒險時,發現了一個不知名的村落,他發現這個村落中的數字比較相當特殊,於是他決定來研究一番。
這個村落認為 7 是一個非常吉祥的數字,所以他們的數字比較皆環繞在 7 的身上。
今天若有兩數字,則兩數字中:
- 可以被 7 整除的比較大,如 140 比 52 大
- 可以被 7 整除的數字中取 70 的餘數較大的比較大,如 28 會比 14 大
- 不能被 7 整除的數字中取 77 的餘數較小的比較大,如 15 會比 16 和 68 大
現在小東會給你一些數字,請你幫小東找出最大的數字。
範例測資
範例測資 | 範例測資 |
---|---|
EOF 輸入,範圍介在 1 至 100000 之間,以數字 0 代表這一串數字的尾端 最多不超過 10 個數字,且 0 不列入須比較的範圍 | 依照該村落的數字比較大小規則,輸出給定數列中最大的數字 若有多個最大的數字,請輸出最前面那一個 |
7 14 28 0 | 28 |
7 77 777 0 | 7 |
52 140 0 | 140 |
15 16 68 0 | 15 |
解題思路
第一個收的數字可以存在一個 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