1002
A + B Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 133596 Accepted Submission(s): 25445
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 = 1111111111111111110
Author
Ignatius.L
作为一个新手,不敢说是给别人指点,只是希望督促自己学会总结,如果盲目的刷题,倒不如一题不做。
这是AC了的代码。
如有问题,恳请更正,
#include<stdio.h> #include<string.h> void reserve(char aa[]); int main() { int t,ci,la,lb,l,i,p,num=0; char aa[1002],bb[1002],cc[1002]; scanf("%d",&t); getchar(); while(t--) { num++; memset(aa,'0',sizeof(aa)); memset(bb,'0',sizeof(bb)); ci=0; p=0; scanf("%s",aa); scanf("%s",bb); reserve(aa); reserve(bb); la=strlen(aa); lb=strlen(bb); l=(la>lb)?la:lb; l++; aa[la]='0'; bb[lb]='0'; for(i=0;i<=l;i++) { p=aa[i]-'0'+bb[i]-'0'+p; cc[ci++]=p%10+'0'; p/=10; } cc[l]='\0'; for(i=l-1;i>0;i--) { if(cc[i]=='0' && cc[i-1]!='0') { cc[i]='\0'; break; } } reserve(cc); aa[la]='\0'; bb[lb]='\0'; reserve(aa); reserve(bb); printf("Case %d:\n",num); printf("%s + %s = %s\n",aa,bb,cc); if(t!=0) putchar(10); } return 0; } void reserve(char aa[]) { int i,j,temp; i=0; j=strlen(aa)-1; for(;i<j;) { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; i++;j--; } }
A+B的精度相加
这道题的解法有很多,我把自己写的一种贴出来。
需要注意的地方有:
每次开始计算的时候,注意把数组清空。
注意当录入数组时,字符串结束符对计算产生的影响。
在输出格式要注意一下,几个空格 几个\n
同时要注意处理特殊情况,比如第一位就不要是0,如果是0就把它舍去(不过有的代码没舍去也AC了);
我觉得这道题的技巧在就于用字符串处理数字相加。