【九度OJ】题目1015:还是A+B 解题报告
标签(空格分隔): 九度OJ
http://ac.jobdu.com/problem.php?pid=1015
题目描述:
读入两个小于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
Ways
一遍AC的滋味太爽了哈哈哈~
这个题,我的第一感觉要用数位拆解,一位一位的比较,后面k位是否相同。但是这样挺麻烦的,因为a,b的数位可能不同,就要考虑是否数位已经用完等等问题,很麻烦。
但是转念一想,我直接求余不就行了吗,这样得到的就是后面几位的数字,而且即使后面的k位数字的领头数字为0也不要紧,因为放到int里自动去掉了。
这样实现起来就很简单了。
我用的是10的幂的形式,也可以写个循环不断的*10,得到求余所用的数字。
#include <stdio.h>
#include <math.h>
int main() {
int a, b, k;
while (scanf("%d%d", &a, &b) != EOF && a != 0 && b != 0) {
scanf("%d", &k);
int a_ = a % ((int) pow(10, k));
int b_ = b % ((int) pow(10, k));
if (a_ == b_) {
printf("-1\n");
} else {
printf("%d\n", a + b);
}
}
return 0;
}
Date
2017 年 3 月 5 日