题目描述
一年一度的ACM校赛又到了,在这个阳光明媚的日子里,两个小朋友在玩一个无聊而又简单的游戏:猜数字。
小朋友Cyin从1~100000里面挑选了三个数字A,B,C(他们可能相同),然后把A+B,A+C,B+C这三个值告诉小朋友Boat,你只需要写一个程序帮助小朋友Boat去计算A,B,C分别是多少,如果无解,则输出“Impossible”。
输入
有多组输入数据。
输入数据的第一行为一个数字T,代表有T组输入数据 (0<T≤20)。
接下来为T组数据,每组数据占一行,为三个整数,分别表示A+B,A+C,B+C的值。
输出
一共T行。
对于每组数据,在一行上输出三个整数或者“Impossible”,表示计算出的A、B、C或者无解。(记得要在每组答案后面换行哦!以后的每道题也一样)
--正文
签到题
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; bool impos(int i){ if (i < 1 || i > 100000) return true; return false; } bool imposSum(int sum){ if (sum < 2 || sum > 200000){ return true; } return false; } int main(){ int time,T; scanf("%d",&T); for (time=1;time<=T;time++){ int sum1,sum2,sum3; int a,b,c; scanf("%d %d %d",&sum1,&sum2,&sum3); if (imposSum(sum1) || imposSum(sum2) || imposSum(sum3)){ printf("Impossible "); continue; } b = (sum1 - sum2 + sum3) / 2; if ((sum1 - sum2 + sum3) % 2 != 0){ printf("Impossible "); continue; } c = sum3 - b; a = sum1 - b; if ( impos(a) || impos(b) || impos(c)) { printf("Impossible "); continue; } if ((a + c) != sum2) { printf("Impossible "); continue; } else { printf("%d %d %d ",a,b,c); continue; } } return 0; }