題目敘述
本題採EOF方式收資料,每筆資料有一個正整數N,當N=0時停止收資料。要求輸出輸入數列中的「最大值」,判斷方式如下:
1. 如兩個數字一個可被7整除一個不可被7整除,則可被7整除的數字「較大」。
2. 如兩個數字都可被7整除,則除以70後的餘數較大者「較大」。
3. 如兩個數字都不可被7整除,則除以77後的餘數較小者「較大」。
4. 如有取餘數的數值相同的情況,則較大值為數列中較前面的值。
範例輸入 #1
7 14 28 0
範例輸出 #1
28
範例輸入 #2
7 77 777 0
範例輸出 #2
7
範例輸入 #3
52 140 0
範例輸出 #3
140
範例輸入 #4
15 16 68 0
範例輸出 #4
15
解題思路
第一個收的數字可以存在一個Max的變數中,之後再做EOF,一個一個和Max變數比較,比較餘數大小時需使用大於等於或小於等於,這樣才可以將較前面的數字設為目前最大值。
解題程式碼如下 (僅供參考):
#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";
}
留言
張貼留言