ZeroJudge F707: 幸運 7 (Lucky Seven)

題目敘述

本題採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";
}


留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge M932: 蜜蜂觀察