UVA 10055

#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。

原文地址:https://www.cnblogs.com/diyingyun/p/2752889.html