E - 数字的孔数
S得到一个数,他想知道这个数每一位上的数字的孔数之和。1,2,3,5,7这几个数字是没有孔的,0,4,6,9都有一个孔,8有两个孔。
Input
输入数据的第一行为一个数T表示数据组数。接下来T行,每行输入一个正整数n(1<=n<=1000),表示要求数字孔数之和的数。n不会有前导0。
Output
对于每组数据输出一行一个整数,表示该数的每一位上的数字的孔数之和。
Sample Input
2 42 669
Sample Output
1 3
一个直白又简单粗暴的题目,稍微用一下进制转换的思想。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>
using namespace std;
int main()
{
char a[3000],*p;
int hole[]={1,0,0,0,1,0,1,0,2,1};
int n,sum;
scanf("%d",&n);
while (n--) {
scanf("%s",a);
sum = 0;
p = a;
while (*p) {
sum += hole[*p-'0'];
p++;
}
printf("%d\n",sum);
}
return 0;
}