Description
一年一度的ACM校赛又到了,在这个阳光明媚的日子里,两个小朋友在玩一个无聊而又简单的游戏:猜数字。
小朋友Cyin从1~100000里面挑选了三个数字(他们可能相同)A,B,C,然后把A+B,A+C,B+C的三个值告诉小朋友Boat,你只需要写一个程序帮助小朋友Boat去计算,A,B,C分别是多少,如果无解,输出”Impossible”
Input
第一行读入case (cas<=20),表示数据组数
接下来读入case组数据,每组数据三个数字,A+B,A+C,B+C。
Output
每组数据输出三个数字A,B,C,如果无解,则输出Impossible
Sample Input
2
1 1 1
2 2 2
Sample Output
Impossible
1 1 1
解题思路:
枚举A,然后用A+B,A+C算出来B和C,最后判断是否满足条件即可。
#include<iostream>
using namespace std;
const int L = 100000;
const int R = 1;
int AB,AC,BC;
bool isPossible(int x)
{
int B = AB-x;
if(B<R||B>L) return false;
int C = AC-x;
if(C<R||C>L) return false;
if(B+C!=BC) return false;
return true;
}
int main()
{
int caseN;
cin>>caseN;
while(caseN--)
{
while(cin>>AB>>AC>>BC)
{
int i;
for(i=R;i<=L;++i)
{
if(isPossible(i))
{cout<<i<<" "<<AB-i<<" "<<AC-i<<endl;break;}
}
if(i>L)
cout<<"Impossible"<<endl;
}
}
return 0;
}
最后欢迎大家访问我的个人网站:1024s