下面我将描述一个简单的函数:
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的十进制表示中有多少个圈圈。
样例输入
2048
样例输出
3
分析:很简单,将输入的数当做字符串,判断每一位有多少个圈。加起来。
1 #include <stdio.h> 2 #include <string.h> 3 int main(){ 4 int num[] = {1, 0, 0, 0, 0, 0, 1, 0, 2, 1}; 5 char s[1001]; 6 int len, i, ans = 0; 7 scanf("%s", s); 8 len = strlen(s); 9 for(i = 0; i < len; i++){ 10 ans += num[s[i] - '0']; 11 } 12 printf("%d", ans); 13 return 0; 14 }