#include <stdio.h> #include <math.h> int main() { long long left, right; while (scanf("%lld%lld", &left, &right) != EOF) { printf("%lld\n", (right>left)?(right-left):(left-right)); } return 0; }
Analysis:
这个题特别的奇怪,陷阱有两个,
①. 题目中说是Hashmat's soldier number is never greater than his opponent.但是Input中却说vice versa并没有说输入的两个数谁先谁后,因此,需要判断一下,要注意的是最后的结果都是positive的。
②. 第二个陷阱在于输入的数字,不超过2^32。int最大是2^31 - 1,而用unsigned依然会超。
因为unsigned最大是2^32 - 1,仍然放不下2^32……
所以这题的数据类型得定义成long long。