A + B Problem II
来源:互联网 发布:康熙王朝 雍正王朝知乎 编辑:程序博客网 时间:2024/05/22 07:51
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 256935 Accepted Submission(s): 49653Problem 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
21 2112233445566778899 998877665544332211
Sample Output
Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110
#include<stdio.h>
#include<string.h>int main()
{
char a[1000],b[1000],c[1003];
int i,j=1,p,n,n1,n2;
scanf("%d",&n);
while(n)
{
scanf("%s %s",a,b);
n1=strlen(a)-1;
n2=strlen(b)-1;
for(i=0;n1>=0||n2>=0;i++,n1--,n2--)
{
p=0;
if(n1>=0&&n2>=0)
c[i]=a[n1]+b[n2]-'0'+p;
if(n1>=0&&n2<0)
c[i]=a[n1]+p;
if(n1<0&&n2>=0)
c[i]=b[n2]+p;
if(c[i]>'9')
{
c[i]=c[i]-10;
p=1;
}
}
if(p==1)printf("%d",p);
printf("Case %d:\n",j);
printf("%s + %s = ",a,b);
while(i--)
printf("%c",c[i]);
j++;
if(n!=1)
printf("\n\n");
else
printf("\n");
n--;
}
return 0;
}
新学的一种方法
#include<stdio.h>#include<string.h>int main(){ char x[1000],s[1000]; int i,j,k,n,m,max,c,d; scanf("%d",&c); d=c; k=1; while(c--) { scanf("%s%s",x,s); //memset( a, 0, sizeof(a)); //memset( b, 0, sizeof(b)); int a[1050]={0},b[1050]={0}; n=strlen(x); m=strlen(s); for(i=n-1,j=0;i>=0;i--) a[j++]=x[i]-'0'; for(i=m-1,j=0;i>=0;i--) b[j++]=s[i]-'0'; if(n>m) max=n; else max=m; for(i=0;i<max;i++) { a[i]+=b[i]; if(a[i]>=10) { a[i]=a[i]-10; a[i+1]++; } } printf("Case %d:\n",k); printf("%s + %s = ",x,s); for(i=max;(i>=0)&&a[i]==0;i--) ; if(i>=0) for(;i>=0;i--) printf("%d",a[i]); else printf("0"); printf("\n"); if(k<d) printf("\n"); k++; } return 0;}
0 0
- A + B Problem II
- A + B Problem II
- A + B problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A+B Problem II
- A+B problem II
- A*B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- A + B Problem II
- ElasticSearch:堆大小与swap设置
- Socket用法详解<1>
- 【Unity】方块滚动代码
- Create Vlan for Interface for Ubuntu and Fedore
- linux集群系列(三):Solr全文搜索服务器部署(Solr-5.2.1)
- A + B Problem II
- CF 5B Center Alignment
- 正则语法
- Android中GridView中onTouch监听(1)item实现触摸执行缩放动画的功能
- 锚点对动画的影响
- WCF入门(一)——简单的示例
- 解决SSH自动断线问题
- 第一次英语单词测验
- GRE写作题库:学习类