In exchange balloon with us!

Problem I:In exchange balloon with us!

Time Limit:1000MS  Memory Limit:65536K
Total Submit:1 Accepted:1

Description

所有的ACMER都知道,比赛中气球是他们的最爱,因为气球的数量象征着他们过掉的题目的数量。一天,比赛结束,大家开始了一场换气球游戏。
现在只有红,黄,蓝三种颜色的气球。规则为两个不同颜色的气球可以换成同等数量的第三种颜色的气球。例如:1红+1黄=2蓝,交换的次数没有限制,现在知道你所拥有的每种颜色气球的数量,问是否能通过交换达到拥有一种颜色气球的状态?

Input

输入数据有多个case,每个case输入为一行,依次为拥有的红色,黄色,蓝色气球的数量(气球很贵,每种数量不会超过10^5)。

Output

如果通过上述规则可以将气球换成一种颜色的气球,输出”Yes”,并且空格后给出转化后你拥有的气球的颜色编号(红:1 黄:2 蓝:3)如果有多种转化结果,输出编号小的那个,否则输出”No”。

Sample Input

 

1 3 1 2 2 2

 

Sample Output

 

Yes 2 Yes 1
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<cstdlib>
#include<ctime>
 
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
 
int main()
{
    int a,b,c;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        if(a==0&&b==0&&c==0)
            printf("No\n");
        else if(b==0 && c==0)
            printf("Yes 1\n");
        else if(a==0 && c==0)
            printf("Yes 2\n");
        else if(a==0 && b==0)
            printf("Yes 3\n");
        else if(abs(b-c)%3==0)
            printf("Yes 1\n");
        else if(abs(a-c)%3==0)
            printf("Yes 2\n");
        else if(abs(a-b)%3==0)
            printf("Yes 3\n");
        else
            printf("No\n");
    }
    return 0;
    //比如a=INF,b=m,(c-b)/3=k,那么c=m+3*k,a和c去交换b,n步之后,
    // b=m+2*n,c=m+3*k-n,
    //那么此时令b=c,那么m+2*n=m+3*k-n,化简为n=k,显然n有解 ,那么就
    //一定可以把b和c换成a(知道为什么吗?不知道就自己想)。你可能还会担心a
    //一定会大于n吗?其实这个不重要,当你还没有交换n步就发现a为0了,
    //把b和c换成a不就让a=2了嘛,并且b和c同时减少1,对他们等于判断是
    //没有影响的,那么就知道这道题最少需要的步数,当然这里题目没有要求
}//YSF友情赞助!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值