2304 - As Easy A+B
SC_21得到一个数,他想知道这个数每一位上的数字的孔数之和。1,2,3,5,7这几个数字是没有孔的,0,4,6,9都有一个孔,8有两个孔。
题目输入
输入数据的第一行为一个数T表示数据组数。接下来T行,每行输入一个正整数n(1<=n<=10000),表示要求数字孔数之和的数。n不会有前导0。
题目输出
对于每组数据输出一行一个整数,表示该数的每一位上的数字的孔数之和。
输入/输出样例
题目输入
2 42 669
题目输出
1 3
C语言解答
#include<stdio.h> int main() { int t,i,n,d,a[10]; scanf("%d",&t); while(t--) { scanf("%d",&n); i=d=0; while(n) { a[i]=n%10; n=n/10; i++; } while(i--) { if(a[i]==0||a[i]==4||a[i]==6||a[i]==9) d++; else if(a[i]==8) d=d+2; } printf("%d\n",d); } return 0; }
C++解答
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int a[10]={1,0,0,0,1,0,1,0,2,1}; int i,t,n,ans; int main() { cin>>t; for(i=1;i<=t;i++) { ans=0; cin>>n; while(n!=0) { ans=a[n%10]+ans; n/=10; } cout<<ans<<endl; } return 0; }