九度OJ 1015:还是A+B (基础题)
- 题目描述:
-
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
- 输入:
-
测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。
- 输出:
-
对每个测试用例输出1行,即A+B的值或者是-1。
- 样例输入:
-
1 2 1 11 21 1 108 8 2 36 64 3 0 0 1
- 样例输出:
-
3 -1 -1 100
思路:
基础题,不解释。
代码:
#include <stdio.h> #include <string.h> int praseStr(char s[20]) { int a = 0; int i; for (i=0; i<strlen(s); i++) a = a*10 + s[i]-48; //printf("%d\n", a); return a; } int main(void) { char sa[20], sb[20]; int i, k, a, b, ai, bi; while (scanf("%s%s%d", sa, sb, &k) != EOF) { if (strcmp(sa, "0") ==0 && strcmp(sb, "0") ==0) break; for (i=0; i<k; i++) { if (i >= strlen(sa)) ai = 0; else ai = sa[strlen(sa)-1-i] - 48; if (i >= strlen(sb)) bi = 0; else bi = sb[strlen(sb)-1-i] - 48; //printf("ai %d bi %d\n", ai, bi); if (ai != bi) break; } if (i == k) printf("-1\n"); else { a = praseStr(sa); b = praseStr(sb); printf("%d\n", a+b); } } return 0; }
编程算法爱好者。