POJ 1504

作者: vanadia | 来源:发表于2016-08-31 01:16 被阅读0次

    POJ 1504

    题意

    把两个数字翻转之后相加,再翻转回来的到结果

    思路

    翻转之后再翻转回来,所以可以视为不用翻转,从左向右加,进位向右进位。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    using namespace std;
    
    int n1,n2;
    int a[100],b[100];
    void add(){
        for(int i=0;i<(n1>n2?n1:n2);i++){
            a[i] = a[i] + b[i];
            if(a[i]>9){
                a[i] -= 10;
                a[i+1]++;
            }
        }
    }
    int main(){
        int t;
        char s1[100],s2[100];
        scanf("%d",&t);
        while(t--){
            scanf("%s%s",s1,s2);
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            n1 = strlen(s1);
            n2 = strlen(s2);
            for(int i = 0;i<n1;i++){
                a[i] = s1[i] - '0';
            }
            for(int i =0;i<n2;i++){
                b[i] = s2[i]-'0';
            }
            add();
    
            int right = 0;
            while(1){
                if(a[right] == 0)
                    right++;
                else
                    break;
            }
            int left = n1 + n2;
            while(1){
                if(a[left]==0)
                    left--;
                else
                    break;
            }
            for(int i = right;i<=left;i++){
                printf("%d",a[i]);
            }
            printf("\n");
        }
    }
    

    相关文章

      网友评论

          本文标题:POJ 1504

          本文链接:https://www.haomeiwen.com/subject/xlsqettx.html