8月 01, 2008

【解題】Hashmat the brave warrior

@
ACM Volume C 10055 - Hashmat the brave warrior


The Problem

Hashmat is a brave warrior who with his group of young soldiers moves from one place to another to fight against his opponents. Before fighting he just calculates one thing, the difference between his soldier number and the opponent's soldier number. From this difference he decides whether to fight or not. Hashmat's soldier number is never greater than his opponent.


The Input

The input contains two integer numbers in every line. These two numbers in each line denotes the number of soldiers in Hashmat's army and his opponent's army or vice versa. The input numbers are not greater than 2^32. Input is terminated by End of File.


The Output

For each line of input, print the difference of number of soldiers between Hashmat's army and his opponent's army. Each output should be in seperate line.


Sample Input

10 12
10 14
100 200


Sample Output

2
4
100


解題思考

  這一題需要解釋嗎?兩數相減,輸出絕對值,就是答案了。

  不過要注意題目很陰險。雖然說 "The input numbers are not greater than 232"。不大於,可是會等於......,所以用 int 就爆掉啦!


參考解答(C++)

#include <iostream>

using namespace std;

int main(void)
{
    long long a, b;
    while (cin >> a >> b)
    {
        if (a > b)  { cout << a - b << endl; }
        else        { cout << b - a << endl; }
    }

#ifndef ONLINE_JUDGE
    system("pause");
#endif
}

2 回覆:

kgame 智涵 提到...

int的極限是正負2^31
所以2^32絕對爆= =
用無號的uint就好了

kgame 智涵 提到...

還有用?:三元運算子適合點

張貼留言