acm-A+B Problem II

来源:互联网 发布:日本爱知世博会ppt 编辑:程序博客网 时间:2024/04/30 08:33

A+B Problem II

时间限制:3000 ms  内存限制:65535 KB
难度:3
描述

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

A,B must be positive.

输入
The first line of the input contains an integer T(1<=T<=20)which means the number of test cases. Then T lines follow, eachline consists of two positive integers, A and B. Notice that theintegers are very large, that means you should not process them byusing 32-bit integer. You may assume the length of each integerwill not exceed 1000.
输出
For each test case, you should output two lines. The first line is"Case #:", # means the number of the test case. The second line isthe an equation "A + B = Sum", Sum means the result of A + B. Notethere are some spaces int the equation.
样例输入
21 2112233445566778899 998877665544332211
样例输出
Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110
来源
经典题目
我的代码:
#include
#include
#include
using namespace std;
void sum(char str1[],char str2[])
{
 int ch[1001]={0};
 int len_a=strlen(str1);
 int len_b=strlen(str2);
 int i=len_a-1;
 int j=len_b-1;
 int k=0;
 int c=0;
 while(i>=0||j>=0)
 {
  if(i<0)
  {
   ch[k]=str2[j]-'0'+c;
  }
  else if(j<0)
  {
   ch[k]=str1[i]-'0'+c;
  }
  else
  {
   ch[k]=str1[i]-'0'+str2[j]-'0'+c;
   
  }
  c=ch[k]/10;
  ch[k]=ch[k];
  i--;j--;k++;
 
 if(c!=0)
  ch[k]=c;
 if(ch[k]!=0) cout<<ch[k];
 for(i=k-1;i>=0;i--)
 {
  cout<<ch[i]; 
 }
 
 cout<<endl;
}
int main()
{
 int t;
 //ifstream cin("test.txt");
 cin>>t;
 int count=0;
 char str1[1001],str2[1001];
 while(t--)
 {
  count++;
  cin>>str1>>str2;
  cout<<"Case"<<count<<":"<<endl;
  cout<<str1<<" +"<<str2<<" = ";
  sum(str1,str2);  
 }
 return 0;
}
原创粉丝点击