ZeroJudge C562: Puyu 愛數論

對於精通數論題目的 Puyu,號稱沒有數論題目是他解不出來的。於是擅長出奇怪水題的 CTF 從天上降臨到了人間準備跟他來一較高下。

CTF 給 Puyu 幾組數字,分別代表函數帶進去的值與函數結果,請他找出其中的規律,並回答 CTF 問的一些數字會產生的結果。

函數如下:

  • F ( 110 ) = 1
  • F ( 163 ) = 1
  • F ( 223 ) = 0
  • F ( 119 ) = 1
  • F ( 278 ) = 2
  • F ( 821 ) = 2

現在請你觀察函數規律,並寫個程式來幫助 Puyu 來完成挑戰!

範例測資

範例輸入範例輸出
EOF 輸入,每筆測資有一個數字 N ,代表 CTF 問 Puyu 的數字。
( 0 <= N <= 2147483649 )
每行請輸出一個數 F ( N )。
F ( N ) 必在 int 範圍
223
821
734
0
2
0

解題思路

本題是考 N 中每一個數字有多少個洞,舉例f(0)會是1、f(8)會是2。可以使用字串將 N 進行輸入之後使用 If 來判斷,範例程式碼中是使用 Map 來做判斷這樣可以直接將 F(N) 直接加到答案中。

範例程式碼-ZeroJudge C562: Puyu 愛數論

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<char, int>MAP;
    MAP['0'] = 1;
    MAP['6'] = 1;
    MAP['8'] = 2;
    MAP['9'] = 1;
    string N;
    while (cin >> N)
    {
        int ans = 0;
        for (int i = 0; i<N.length(); i++)
        {
            ans += MAP[N[i]];
        }
        cout << ans << "\n";
    }
}

//ZeroJudge C562
//Dr. SeanXD

發佈留言