D - 数字游戏
Time Limit:1000MS MemoryLimit:32768KB 64bit IO Format:%I64d& %I64u
Submit Status
Description
现在,给你2个整形数字A和B。你的任务就是计算出A+B的结果C后,统计C中数字5出现的次数。
Input
输入数据第一行包含一个整数T,表示测试数据的组数。对于每组测试数据:
输入两个整数a,b(-2*10^9<a,b<2*10^9)。两个数字之间用空格隔开。
Output
对于每组测试数据,输出一行,包含一个整数,表示数字5出现的次数。
Sample Input
2
4 5
33 22
Sample Output
0
2
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
int n,sum;
scanf("%d",&n);
while(n--)
{
sum=0;
char a[1000],b[1000];
int i,j,c[1000]={0},la,lb,q;
scanf("%s %s",a,b);
la=strlen(a)-1;
lb=strlen(b)-1;
q=la>lb?la:lb;
for(i=0;la>=0;i++,la--)
c[i]=a[la]-'0';
for(i=0;lb>=0;lb--,i++){
c[i]+=b[lb]-'0';
if(c[i]>=10){
c[i+1]++;
c[i]-=10;
if(c[i]==5)sum++;
}
else{
if(c[i]==5)sum++;
}
}
while(c[i]!=0){
if(c[i]>=10){
c[i+1]++;
c[i]-=10;
if(c[i]==5)sum++;
}
else{
if(c[i]==5)sum++;
}
i++;
}
if(c[q+1]!=0){
if(c[q+1]==5)sum++;
}
cout<<sum<<endl;
}
return 0;
}
突然发现之前忘了正负号问题。。。咋对啦
#include<cstdio>
#include<algorithm>
using namespace std;
long long int a,b,c;
int T,ans;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld",&a,&b);
c=a+b;
ans=0;
for (c=c<0?-c:c;c;c/=10) if (c%10==5) ans++;
printf("%d\n",ans);
}
return 0;
}