牛客网2018长沙理工大学第13界


目描述

zhrt是数学大佬,但有一天一道奇怪的数学题把他难住了:题目要求计算两个十进制数相加后的结果,但在本题中是不需要进位的!
  现在zhrt弯下他的小蛮腰向你请教,你能帮帮他吗?

输入描述:

输入有多组(组数不超过1000),每组占一行,每行有2个正整数A和B。(A,B<=1e9)

输出描述:

每组输出占一行,输出题目中A和B相加的结果。
示例1

输入

123 321
999 1
99 11

输出

444
990
0

没思路,后来想了想,倒过来储存正好可以把每一位对齐;然后%10,算出结果

#include <iostream>
#include<string.h> 
#include<string>
#include<stdio.h>
using namespace std;
char a[15];
char b[15];    
long long t,a1[15],b1[15],ans[15],l=0;
int main () 
{ 
    while(cin>>a>>b)
    {
        l=0;
        memset(a1,0,sizeof(a1));
        memset(b1,0,sizeof(b1));
        memset(ans,0,sizeof(ans));
        int len1=strlen(a);
        int len2=strlen(b);
        t=max(len1,len2);
        for(int i=0,j=len1-1;j>=0;i++,j--){
            a1[i]=a[j]-'0';
        }
        for(int i=0,j=len2-1;j>=0;i++,j--){
            b1[i]=b[j]-'0';
        }
         
        for(int j=0;j<t;j++)
        {
            if(a1[j]+b1[j]>=10)
            {
                ans[j]=(a1[j]+b1[j])%10;
            }
            else
            {
                ans[j]=a1[j]+b1[j];
                 
            }
        //  cout<<ans[j]<<endl;
        }
        for(int i=t-1;i>=0;i--){
            if(ans[i]!=0){
                for(int j=i;j>=0;j--)
                    cout<<ans[j];
                break;
            }
            if(i==0){
                cout<<0;
            }
        }
        cout<<endl;
    }
    return 0; 
}  

猜你喜欢

转载自blog.csdn.net/qq_41453511/article/details/79997452