跟着《算法竞赛入门经典》的脚步,子勤试着在 UVa Online Judge 上做题。#10055 - Hashmat the brave warrior 是我做的第1题。但没想到的是,第1题就把我给坑到了,WA 了两次才过。
题目分析
这道题应该算得上是 UVa 上非常简单的一道题目。它以战士 Hashmat 与敌方的士兵数量之差为背景,其实就是让我们计算两数之差。值得注意的有:
- 数据的范围:The input numbers are not greater than 。
- 输入的顺序并不是固定的,既可能是先 Hashmat 后 Opponents,也能倒过来;而最终输出的是一个正数。
一看到 2^32,我就马上想,哈哈,不超过 32 位整数,直接 int
就可以啦!然后就这样挂掉了。
一下子脑子短路没想明白为啥错了,所以搜了一下。这才想起,int
是有符号位的,最大只能表示到 。用 unsigned int
也还不够,因为它的最大值为 (第 1 位为 0 占去了一个,所以要减去 1)。所以,用 long long
吧。
解答
1 |
|