标签:out space 大数 -- scanf amp jin char s 条件
普通大数相加:
(1)超时: while循环条件不改变,导致死循环
(2)wa: s1,s2为字符串,len1=strlen(s1),len2=strlen(s2);
swap(s1,s2)后,没有交换len1,len2
(3)格式错误: 最后一行不要换行,每两个测试样例之间换行。
看来我的菜是永无止境的,下次写代码,记得注意:
1. 题目要求的输出格式
2. 仔细想想每一条语句对上面的变量是否会造成影响。
3. 输出的时候多测试,随机数测试也是有必要的,必须把所有可能情况都测一遍再交。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define ll long long
using namespace std;
#define maxn 1220
#define rep(i,a,b) for(int i=(a);i<(b);i++)
char s1[maxn],s2[maxn];
char ss1[maxn],ss2[maxn];
int ans1[maxn*10];
int ans2[maxn*10];
int t1=0;
int t2=0;
int main(){
int t;
cin>>t;
for(int kk=0;kk<t;kk++){
t1=t2=0;
scanf("%s %s",s1,s2);
strcpy(ss1,s1);
strcpy(ss2,s2);
int l1=strlen(ss1);
int l2=strlen(ss2);
// cout<<l1<<" "<<l2<<endl;
int len1=strlen(s1);
int len2=strlen(s2);
if(len1<len2){
swap(s1,s2);
}
len1=strlen(s1);
len2=strlen(s2);
int i1,i2;
i1=len1-1,i2=len2-1;
int jin=0;
while(i1>=0&&i2>=0){
int x1=s1[i1]-‘0‘;
int x2=s2[i2]-‘0‘;
ans1[t1++]=(x1+x2+jin)%10;
jin=(x1+x2+jin)/10;
i1--,i2--;
}
while(i1>=0){
int x1=s1[i1--]-‘0‘;
ans1[t1++]=(x1+jin)%10;
jin=(x1+jin)/10;
}
if(jin)
ans1[t1++]=jin;
for(int i=t1-1;i>=0;i--){
ans2[t2++]=ans1[i];
}
printf("Case %d:\n",kk+1);
rep(o,0,l1)
printf("%c",ss1[o]);
cout<<" + ";
rep(o,0,l2)
printf("%c",ss2[o]);
cout<<" = ";
rep(i,0,t2)
printf("%d",ans2[i]);
puts("");
if(kk!=t-1)
puts("");
}
return 0;
}
C - A + B Problem II HDU - 1002
标签:out space 大数 -- scanf amp jin char s 条件
原文地址:https://www.cnblogs.com/pipitongkw1/p/10632507.html