今天是水题记录第三天,尝试了水一下大数加法,发费了好多时间0-0.0-0
题目如下
绝对没有坑
这道题就是一道很正常的A+B
绝对没有坑o(* ̄▽ ̄*)o
Input输入数据的第一行为一个整数T(1≤T≤20),表示测试数据总数,紧接着的T行数据,每行包含由空格隔开的两个整数a和b,每组数据占一行。注意了,a和b可能非常大,大到超过32位整数可以表示的范围,我们假定a和b的位数不超过1000。
Output对于每组数据,你需要输出两行,第一行显示"Case #:"(注意输出为英文字符),第二行为一个等式"a + b = Sum",这里的Sum就是指a + b的结果(注意这个等式中的空格)。请在每两组输出数据间输出一个空行。
Sample Input
2 1 2 112233445566778899 998877665544332211
Sample Output
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
我的代码
#include<stdio.h> #include<string.h> int main(){ int a; int max; scanf("%d",&a); char s[1005]; char ch[1005]; for(int i=0;i<a;i++){ int o=0; int p=0; int sum[1005]={0}; int s1[1005]={0}; int ch1[1005]={0}; scanf("%s",&s); getchar(); scanf("%s",&ch); int len=strlen(s); int len1=strlen(ch); if(len>len1)max=len; else max=len1; for(int j=0;j<=max;j++){ s[j]=s[j]-'0'; ch[j]=ch[j]-'0'; } for(int j=len-1;j>=0;j--){ s1[o]=s[j]; o++; } for(int j=len1-1;j>=0;j--){ ch1[p]=ch[j]; p++; } for(int j=0;j<max;j++){ sum[j]=sum[j]+s1[j]+ch1[j]; if(sum[j]>9){ sum[j]=sum[j]%10; sum[j+1]++; } } printf("Case %d:\n",i+1); for(int j=len-1;j>=0;j--){ printf("%d",s1[j]); } printf(" + "); for(int j=len1-1;j>=0;j--){ printf("%d",ch1[j]); } printf(" = "); if(sum[max]!=0)printf("%d",sum[max]); for(int j=max-1;j>=0;j--){ printf("%d",sum[j]); } if(i!=a-1) printf("\n\n"); else printf("\n"); } return 0; }
水题真累!!~~~~
浙公网安备 33010602011771号