A+B有关问题II

A+B问题II

A+B Problem II

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述

 计算两个数的和!(要求能计算1000位以内的数的和)

样例输入
112233445566778899 998877665544332211
样例输出
1111111111111111110

简单说:就是大数相加!

代码:

/*
*问题描述:A+B 问题 
*运行环境:Dev-C++ 4.9.9.2 
*作者:    牟尼
*日期:    2014/3/17 
*/ 
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

#define MAX 1005
int a[MAX],b[MAX];

int main()
{
    char s1[MAX],s2[MAX];
    int res[MAX];
    int i,j,len1,len2;
	
	scanf("%s%s",s1,s2);
	len1 = strlen(s1);
	len2 = strlen(s2);

	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(res,0,sizeof(res));
	
	for(i = len1-1,j = 0; i >= 0; --i) //存入整型数组 
		a[j++] = s1[i] - '0';
	for(i = len2-1,j = 0; i >= 0; --i)
		b[j++] = s2[i] - '0';
	
	
	int t = 0;
	int len = len1 > len2?len1:len2;
	for(i = 0; i < len; ++i)  //累加求和 
	{
		res[i] = t+a[i]+b[i];
		t = res[i]/10;
		res[i] %= 10;
	}
	len = len + 2;
	while(len > 0 && res[len] == 0) //确定和的长度 
		len--;
	
	for(i = len; i >= 0; --i)
	{
		printf("%d",res[i]);  
	}
	

//	system("PAUSE");

    return 0;
}