本文共 1283 字,大约阅读时间需要 4 分钟。
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。
第一行一个正整数表示测试数据的个数n。
只有n行,每行两个正整数a和b(0<a,b<=10000)。如果满足题目的要求输出a+b的值,否则输出NO。
212 3499 1
46NO
思路:
数字反转可借助字符串来实现。(见代码1)
更好的办法是直接反转。(见代码2)
代码1:
#include#include #define MAX 7 void fanzhuan(char *a, char *af){ int i; int len = strlen(a); for (i=0; i =0; i--) { if (af[i] > '0') { af[i+1] = '\0'; break; } } } void add(char *a, char *b, char *sum){ int lena=strlen(a), lenb=strlen(b); int i; char tmp; for (i=0; i '9') { sum[i+1] = ((sum[i]-48)/10) + 48; sum[i] = ((sum[i]-48)%10) + 48; } } //for (i=0; i =0; i--) { if (sum[i] > '0') { sum[i+1] = '\0'; break; } } if (i < 0) sum[1] = '\0'; int lens = strlen(sum); for (i=0; i
代码2:
#include#include int fz(int a){ int n = 0; while (a) { n = n*10 + a%10; a /= 10; } return n;} int main(void){ int n, i; int a, b; scanf("%d", &n); for (i=0; i
转载地址:http://zfeli.baihongyu.com/