A+B大数运算

基础加法大数运算:

[https://vjudge.net/problem/HDU-1002]

题目:

输入两个长度不超过1000的整数求出sum。

思路:

由于数字很大不能直接加,用字符串形式输入,分离每个字符(a[i]=sa[i]-'0',b[i]同理),并分别存入两个数组,再选取len=max(alen,blen);
从个位开始进行加,注意进位即可。

代码:

/*A+B大数运算*/
#include<bits/stdc++.h>
using namespace std;
int main(){
	string sa,sb;
	int a[1005],b[1005];
	int t,i,j;
	cin>>t;
	for(int k=1;k<=t;k++){
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		j=0;
		cin>>sa>>sb;
		int alen=sa.length(),blen=sb.length();
		for(i=alen-1;i>=0;i--)
		a[j++]=sa[i]-'0';
		j=0;
		for(i=blen-1;i>=0;i--)
		b[j++]=sb[i]-'0';
		int tem=0;
		int len=max(alen,blen);
		for(i=0;i<len;i++){
			a[i]+=b[i]+tem;
			tem=a[i]/10;
			a[i]%=10;
		}
		if(tem>0) a[len++]=tem;
		if(k!=1)
		cout<<endl;
		printf("Case %d:\n", k);
        cout<<sa<<" + "<<sb<<" = ";
		for(i=len-1;i>=0;i--)
		cout<<a[i];
		cout<<endl; 
	}
	return 0;
} 
posted @ 2018-07-28 22:12  ChunhaoMo  阅读(369)  评论(0编辑  收藏  举报