题目大意:计算两个数相加时需要多少次进位。
简单的高精度计算。
以下是我的代码:
#include<stdio.h>
#include<string.h>
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
const long maxn=17;
const char end[]="0";
char sa[maxn],sb[maxn];
while(scanf("%s%s",sa,sb)==2)
{
if(strcmp(sa,end)==0&&strcmp(sb,end)==0) break;
long lena=strlen(sa),lenb=strlen(sb),lenc,ans;
long a[maxn],b[maxn],c[maxn];
lenc=(lena>lenb?lena:lenb);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(long i=0;i<lena;i++) a[i]=sa[lena-i-1]-'0';
for(long i=0;i<lenb;i++) b[i]=sb[lenb-i-1]-'0';
ans=0;
for(long i=0;i<lenc;i++)
{
c[i]+=a[i]+b[i];
if(c[i]>=10)
{
c[i]-=10;
c[i+1]++;
ans++;
}
}
if(ans==0)
printf("No carry operation.\n");
else if(ans==1)
printf("1 carry operation.\n");
else printf("%ld carry operations.\n",ans);
}
return 0;
}
posted on 2010-01-22 13:43
lee1r 阅读(426)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:数学/数论