XDOJ1253 - 简单的游戏

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值