杭电acm 1002 (A+B Problem II)

杭电acm 1002 (A+B Problem II)_第1张图片

 

杭电acm 1002 (A+B Problem II)_第2张图片

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int T;
    string s1,s2,temp;
    cin>>T;
    if(T>20||T<0) return 0;
        for(int i=0;i<T;i++)
        {
          cin>>s1>>s2;
          cout<<"Case "<<i+1<<":"<<"\n"<<s1<<" + "<<s2<<" = ";//注意Case 首字母大写!不然通不过的!
           //if(s1.length()>1000||s2.length()>1000) break;
          if(s1.length()<s2.length())//先判断s1,s2的长度为后面做准备。
          {
            temp=s1;
            s1=s2;
            s2=temp;
          }
          for(int n=s1.length()-1,m=s2.length()-1;n>=0;n--,m--)//从最后一位依次向前做加法,注意:进位算法!
          {
              if(m>=0)
                s1[n]=char(s1[n]-'0'+s2[m]);
              if(s1[n]-'0'>=10)
              {
                 s1[n]=char((s1[n]-'0')%10+'0');
                     if(n>0)       //如果已经到首位直接在前面添“1”即可!
                         s1[n-1]+=1;
                     else
                         s1='1'+s1;
              }
          }
         cout<<s1<<"\n";
         if(i<T-1)
             cout<<"\n";
        }
    return 0;
}


你可能感兴趣的:(杭电acm 1002 (A+B Problem II))