九度oj-1089

题目描述:

12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。

输入:

第一行一个正整数表示测试数据的个数n。
只有n行,每行两个正整数a和b(0<a,b<=10000)。

输出:

如果满足题目的要求输出a+b的值,否则输出NO。

样例输入:

2
12 34
99 1

样例输出:

46
NO

代码:

#include<stdio.h>  

int main(){  
    int n,i,a,b,ra,rb,sum,rsum,ta,tb;  
    //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);   
    while(scanf("%d",&n) != EOF){  
        for(i = 0;i < n;i++){  
            ra = 0;//a的翻转  
            rb = 0;//b的翻转  
            rsum = 0;//a+b和的翻转  
            scanf("%d %d",&a,&b);  
            ta = a;  
            tb = b;  
            sum = a + b;  
            //a的翻转  
            while(ta){  
                ra = ra * 10 + ta % 10;  
                ta = ta / 10;  
            }  
            //b的翻转  
            while(tb){  
                rb = rb * 10 + tb % 10;  
                tb = tb / 10;  
            }  
            //a+b和的翻转  
            while(sum){  
                rsum = rsum * 10 + sum % 10;  
                sum = sum / 10;  
            }  
            //两个数反转的和是否等于两个数的和的反转。  
            if(ra + rb == rsum){  
                printf("%d\n",a + b);  
            }  
            else{  
                printf("NO\n");  
            }  
        }  
    }  
}