對於精通數論題目的 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