WOJ1162-Simple Addition

本文介绍了一种处理大整数相加的高精度加法算法,并提供了详细的C语言实现代码。该算法能够应对位数超过常规整型变量限制的情况,适用于需要进行大数运算的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给两个数n1, n2,计算s = n1 + n2。很简单的算术题,不是吗?

输入格式

输入的第一行为整数N,表示测试数据的个数。接下来的N行,每行为两个非负整数,即上面的n1和n2。n1、n2的位数不会超过1000位,除0外没有数字以0开头(e.g. 0100, 0053)。

输出格式

对于每对n1、n2,输出一行结果:s=n1 + n2。

样例输入

3
3 2
90 10
999999999999999999999999999999999999999999 9999999999999999999999999999999999

样例输出

5
100
1000000009999999999999999999999999999999998

思路很简单,但是要实现高精度加法

#include<stdio.h>
#include<string.h>
int main() {
	int i,p,q,k,t;
	scanf("%d\n",&t);
	while(t--) {
		char a[1001]= {0},b[1001]= {0},e[2002]= {0};
		int c[1001]= {0},d[1001]= {0},sum[1002]= {0};
		int len_a,len_b;
		gets(e);
		p=strlen(e);
		for(i=0; i<p ; i++) {
			if(e[i]==' ') {
				break;
			}
			a[i]=e[i];
		}
		len_a=i-1;
		i++;
		for(k=0; i<p; i++,k++)
			b[k]=e[i];
		len_b=k-1;
		for(i=0; i<=len_a; i++)
			c[i]=a[len_a-i]-'0';
		for(i=0; i<=len_b; i++)
			d[i]=b[len_b-i]-'0';
		for(i=0; i<=len_a||i<=len_b; i++) {
			sum[i]+=c[i]+d[i];
			if(sum[i]>=10) {
				++sum[i+1];
				sum[i]-=10;
			}
		}
		if(sum[i--]>0)printf("1");
		for(; i>=0; i--)
			printf("%d",sum[i]);
		printf("\n");
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值