1. 程式人生 > >【計蒜客系列】挑戰難題24:函式規律

【計蒜客系列】挑戰難題24:函式規律

題目來源:計蒜客

下面我將描述一個簡單的函式:
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;
}