大数加法

大数加法运用模拟思想,就是你列个竖式,怎样加怎样进位用代码表示出来就行了。

给出2个大整数A,B,计算A+B的结果。


Input 第1行:大数A
第2行:大数B
(A,B的长度 <= 10000 需注意:A B都为正数) Output 输出A + B Sample Input
68932147586
468711654886
Sample Output
537643802472

代码如下:

//hdu1002 
#include<cstdio>
#include<cstring>
const int maxx=10000;
char p1[maxx],p2[maxx];
int sum[maxx+1],d[maxx],s[maxx];
int main()
{
	//freopen("输入.txt","r",stdin); 
	int n;
	scanf("%d",&n);
	for(int k=1;k<=n;k++){
		memset(sum,0,sizeof(sum));
		memset(s,0,sizeof(s));
		memset(d,0,sizeof(d));
		scanf("%s%s",p1,p2);
		int j=0,len1=strlen(p1),len2=strlen(p2);
		for(int i=len1-1;i>=0;i--,j++)
			d[j]=p1[i]-'0';
		j=0;
		for(int i=len2-1;i>=0;i--,j++)
			s[j]=p2[i]-'0';
		int len=len1>len2?len1:len2;
		int num=0;
		for(int i=0;i<=len;i++){//两个数字相加其位数顶多比原来最的位数加1(99+99=198),添加=len 
			sum[i]=s[i]+d[i]+num/10;//此处不用每一位%10,后面%10输出 
			num=sum[i];
			/*int temp=s[i]+d[i]+num;//此处不用每一位%10,后面%10输出 
			sum[i]=temp%10;
			num=temp/10;不用%10输出的写法*/
		}
		int t=len;
		if(sum[t]!=0) t++;//说明多了一位 
		printf("Case %d:\n%s + %s = ",k,p1,p2);
		for(int i=t-1;i>=0;i--)
			printf("%d",sum[i]%10); 
		printf("\n");
		if(k!=n) printf("\n");//不输出多余空行 
	 } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值