【九度OJ】题目1015:还是A+B 解题报告

【九度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 日