1065 A+B and C(64bit)

刚开始以为做大整数加减法,幸亏搜了一下,题目只要求判断true或false

关于检测溢出的做法:

http://tech-wonderland.net/blog/detect-integer-overflow.html

但是<climits>里的LLONG_MAX

这种东西谁记得住!

还是按照http://blog.csdn.net/realxuejin/article/details/14001651

做法比较实用

#include <stdio.h>
//#include <climits>里有INT_MAX LLONG_MAX LLONG_MIN

int main(){
	freopen("in.txt","r",stdin);

	int t;
	scanf("%d",&t);
	
	 

	for(int i = 0; i < t; i++){
		long long a, b, c;
		scanf("%lld%lld%lld",&a,&b,&c);

		long long res = a+b;
		
		printf("Case #%d: ",i+1);

		bool flag;
		if(a>0 && b>0 && res<=0){//上溢出了, 那结果肯定大于c
								//注意res==0也是溢出了!
			flag = true;		
		}else if(a<0 && b<0 && res>=0){//下溢出了,肯定小于c
			flag = false;
		}else{
			flag = (a+b>c);
		}

		if(flag){
			printf("true\n");
		}else{
			printf("false\n");
		}

		 
	
	}


	return 0;
}


你可能感兴趣的:(1065 A+B and C(64bit))