加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

杭电水题 1002 大数加法

发布时间:2020-12-14 02:35:49 所属栏目:大数据 来源:网络整理
导读:杭电acm1002 A?+?B?Problem?II Time?Limit:?2000/1000?MS?(Java/Others)????Memory?Limit:?65536/32768?K?(Java/Others) Total?Submission(s):?60478????Accepted?Submission(s):?11083 Problem?Description I?have?a?very?simple?problem?for?you.?Given?tw

杭电acm1002

A?+?B?Problem?II
Time?Limit:?2000/1000?MS?(Java/Others)????Memory?Limit:?65536/32768?K?(Java/Others)
Total?Submission(s):?60478????Accepted?Submission(s):?11083


Problem?Description
I?have?a?very?simple?problem?for?you.?Given?two?integers?A?and?B,?your?job?is?to?calculate?the?Sum?of?A?+?B.
?

Input
The?first?line?of?the?input?contains?an?integer?T(1<=T<=20)?which?means?the?number?of?test?cases.?Then?T?lines?follow,?each?line?consists?of?two?positive?integers,?A?and?B.?Notice?that?the?integers?are?very?large,?that?means?you?should?not?process?them?by?using?32-bit?integer.?You?may?assume?the?length?of?each?integer?will?not?exceed?1000.
?

Output
For?each?test?case,?you?should?output?two?lines.?The?first?line?is?"Case?#:",?#?means?the?number?of?the?test?case.?The?second?line?is?the?an?equation?"A?+?B?=?Sum",?Sum?means?the?result?of?A?+?B.?Note?there?are?some?spaces?int?the?equation.?Output?a?blank?line?between?two?test?cases.
?

Sample?Input
2
1?2
112233445566778899?998877665544332211
?

Sample?Output
Case?1:
1?+?2?=?3

Case?2:
112233445566778899?+?998877665544332211?=?2222222222222221110

注意输出时的格式问题

代码一:

#include?<iostream>

#include?<string.h>

using?namespace?std;

?

int?main()

{

char?str1[1000],str2[1000],str3[1000],str4[1000];

char?sum1[1000],sum2[1000];

int?n;

int?p?=?1;

int?temp;

int?flag?=?0;

int?len1?=?0;

int?len2?=?0;

cin>>n;

while(n--)

{

flag?=?0;

memset(str1,'0',sizeof(str1));

memset(str2,sizeof(str2));

memset(str3,sizeof(str3));

memset(str4,sizeof(str4));

memset(sum1,sizeof(sum1));

memset(sum2,'',sizeof(sum2));

cin>>str1;

cin>>str2;

????????len1?=?strlen(str1);

len2?=?strlen(str2);

for(int?i?=?0;i?<?len1;i++)

{

str3[i]?=?str1[len1-1-i];

}

for(int?j?=?0;j?<?len2;j++)

{

str4[j]?=?str2[len2-1-j];

}

?

if(len1?>?len2)

{

for(int?i?=?0;i?<?len1;i++)

{

temp?=?sum1[i]?-?'0';

sum1[i]?=?(temp?+?(str3[i]?-'0')?+?(str4[i]?-?'0'))%10?+?'0';

if(((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?>?10)||((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?==?10))

{

sum1[i+1]++;

}

}

flag?=?0;

if(sum1[len1]?!=?'0')

flag?=?1;

for(int?m?=?0;m?<?len1?+?flag;m++)

{

sum2[m]?=?sum1[len1?+?flag?-?1?-?m];

}

}

else

{

for(int?i?=?0;i?<?len2;i++)

{

temp?=?sum1[i]?-'0';

sum1[i]?=?(temp?+?(str3[i]?-'0')?+?(str4[i]?-?'0'))%10?+?'0';

if(((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?>?10)||((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?==?10))

{

sum1[i+1]++;

}

}

flag?=?0;

if(sum1[len2]?!=?'0')

flag?=?1;

for(int?m?=?0;m?<?len2?+?flag;m++)

{

sum2[m]?=?sum1[len2?+?flag?-?1?-?m];

}

}

if(n?==?0)

{

cout<<"Case?"<<p++<<":"<<endl;

cout<<str1<<"?+?"<<str2<<"?=?"<<sum2<<endl;

}

else

{

cout<<"Case?"<<p++<<":"<<endl;

cout<<str1<<"?+?"<<str2<<"?=?"<<sum2<<endl<<endl;

}

}

return?0;

}

代码2

#include<stdio.h>

#include<string.h>

int?shu(char?a)

{

????return?(a-'0');

}

int?main(){

????char?a[1000],b[1000];

????int?num[1001];

????int?n,i,j=1,al,bl,k,t;

????scanf("%d",&n);

????while(n--)

????{

???????getchar();

????????if(j!=1)

???????printf("n");

???????scanf("%s",a);

???????al=strlen(a);

???????scanf("%s",b);

???????bl=strlen(b);

???????k=(al>bl)?al:bl;

???????for(i=0;i<=k;i++)

???????num[i]=0;

???????t=k;

???????for(k;al>0&&bl>0;k--)

???????{

???????????num[k]+=shu(a[--al])+shu(b[--bl]);

?

???????????if(num[k]/10)

???????????{

???????????????num[k-1]++;

???????????????num[k]%=10;

???????????}

???????}

???????while(al>0)

???????{

????????????num[k--]+=shu(a[--al]);

????????????if(num[k+1]/10)

???????????{

???????????????num[k]++;

???????????????num[k+1]%=10;

???????????}

???????}

???????while(bl>0)

???????{

????????????num[k--]+=shu(b[--bl]);

????????????if(num[k+1]/10)

???????????{

???????????????num[k]++;

???????????????num[k+1]%=10;

???????????}

???????}

?

???????printf("Case?%d:n",j++);

???????printf("%s?+?%s?=?",a,b);

???????for(i=0;i<=t;i++)

???????{

???????????if(i==0&&num[i]==0)

???????????i++;

???????????printf("%d",num[i]);

???????}

???????printf("n");

???}

???return?0;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读