【計蒜客系列】挑戰難題24:函式規律
阿新 • • 發佈:2019-01-31
題目來源:計蒜客
下面我將描述一個簡單的函式:
f(8)=2
f(16)=1
f(32)=0
f(2048)=3
讀入一個x(1≤x≤101000),請你找出f(x)的值。
輸入包括一行,僅一個數字x。
輸出包括一行,僅一個數字f(x)。
提示:
f(0)=1, f(1)=0, f(2)=0, f(3)=0, f(4)=0, f(5)=0, f(6)=1, f(7)=0, f(8)=2, f(9)=1
有時候看資料猜題意也是很重要的技能,如果你看到這裡還不知道題意的話,那麼我來告訴你,f(x)表示x的十進位制表示中有多少個圈圈。
樣例1
輸入:
2048
輸出:
3
注:
2048 = f(8) + f(4) + f(0) + f(2) = 2 + 0 + 1 + 0 = 3
#include <iostream> using namespace std; int calcZero(const string n) { int len = n.length(); int count = 0; while (len > -1) { switch (n[len - 1]) { case '1': case '2': case '3': case '4': case '5': case '7': count += 0; break; case '0': case '6': case '9': count += 1; break; case '8': count += 2; break; default: break; } len--; } return count; } int main(int argc, char **argv) { string str; cin >> str; int ans = calcZero(str); cout << ans << endl; return 0; }