box
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Problem Description
One day, winnie received a box and a letter. In the letter, there are three integers and five operations(+,-,*,/,%). If one of the three integers can be calculated by the other two integers using any operations only once.. He can open that mysterious box. Or that box will never be open.
Input
The input contains several test cases.Each test case consists of three non-negative integers.
Output
If winnie can open that box.print "oh,lucky!".else print "what a pity!"
Sample Input
1 2 3
Sample Output
oh,lucky!这道题我一开始是把能出现的情况列举出来,但是结果是发生了除0错误。后来仔细想了一下,减法是加法的逆运算,除法是乘法的逆运算算,如果判断相乘,就不会出现除0的错误,而且我们判断加法以后,就不用再判断减法,判断乘法以后就不用判断除法。还有要注意的是,a%b时b不能等于0, 题目中的'/'是 “除”而不是“取整”,要小心,这个地方让我wa了好几次。代码如下:#include<stdio.h> int main() { __int64 a,b,c; while(scanf("%I64d%I64d%I64d",&a,&b,&c)!=EOF) { int p=0; if(a+b==c||a+c==b||b+c==a||a*b==c||a*c==b||b*c==a) p=1; if(a!=0) { if(b%a==c||c%a==b) p=1; } if(b!=0) { if(a%b==c||c%b==a) p=1; } if(c!=0) { if(a%c==b||b%c==a) p=1; } if(p) printf("oh,lucky!\n"); else printf("what a pity!\n"); } return 0; }有一个迷惑的地方:为什么a,b,c定义成64位整数能AC,定义成int型过不了?