互联网络公司面试题之三
互联网公司面试题之三
问题:12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问它们两个数反转的和是否等于两个数的和的反转,请编程实现。要求程序的效率尽可能高、代码尽量短以及内存使用量尽量小。
Input->第一行是一个正整数表示测试的个数n;只有n行,每行两个数据a和b(0<a,b<10000)。
Output->如果满足题目的要求输出a+b的值,否则输出NO。
答:实现代码如下:
问题:12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问它们两个数反转的和是否等于两个数的和的反转,请编程实现。要求程序的效率尽可能高、代码尽量短以及内存使用量尽量小。
Input->第一行是一个正整数表示测试的个数n;只有n行,每行两个数据a和b(0<a,b<10000)。
Output->如果满足题目的要求输出a+b的值,否则输出NO。
答:实现代码如下:
#include <stdio.h> #include <stdlib.h> int r(int s){ int t=s,sum=0; while(t) {sum=10*sum+t%10;t/=10;} return sum; } int main(){ unsigned char n,i; int a,b; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;++i) { scanf("%d %d",&a,&b); if(r(a)+r(b)!=r(a+b)) printf("NO\n"); else printf("%d\n",a+b); } } return 0; }
1 楼
软件开发学习者lilonghui
2012-01-02
或许有个更简单的判断方法: 只要两个数的对应位相加不进位就能满足