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;
}
时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题