您的位置:首页 > 其它

杭电1002 涉及大数相加

2016-02-29 15:04 344 查看
遇到大数就比较头疼

#include<iostream>
#include<stdio.h>
#include<cstring>
#define N 1010
using namespace std;

int main(){
char str1[N],str2[N];
int len1,len2;
int n ;
while(scanf("%d",&n)!=EOF){
for(int j = 1;j<=n;j++){
scanf("%s%s",str1,str2);
int num1[N]={0},num2[N]={0};
int k;
int c;
len1 = strlen(str1);
len2 = strlen(str2);
if(len1<len2)
k = len2;
else
k = len1;
c=k;
for(int i = 0;i<len1;i++,k--)
{
num1[k]=str1[len1-1-i]-'0';//num1[1]为止,留下num[0]以备进位
          }
for(int i = 0,k=c;i<len2;k--,i++)
num2[k]=str2[len2-1-i]-'0';
for(int i = c;i>0;i--)
{
num1[i]+=num2[i];
if(num1[i]>=10)
{
num1[i]-=10;
num1[i-1]++;
}
}
printf("Case %d:\n",j);
printf("%s + %s = ",str1,str2);
if(num1[0]!=0)//最大位是否为0
          {
for(int i = 0;i<=c;i++)
{
printf("%d",num1[i]);
}
}else
{
for(int i = 1;i<=c;i++)
{
printf("%d",num1[i]);
}
}
printf("\n");
if(j!=n)
printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: