2021CCPC广州Three Integers(思维)


The 2021 CCPC Guangzhou Onsite H题 Three Integers

在这里插入图片描述
emm真没啥好说的,分类讨论即可,合理运用倍数关系
注意存在一个0的时候且存在一个数为1 那么倍数就必须扩大下 否则会被hack到死

因为x y z 不能超过1e18
且a b c范围1e9
我设置的倍数趋近于1e9
但是可能会被这种数据卡,a=0,b=1,c=1e9
此时不能单纯的用
在这里插入图片描述


signed main()
{
    ll t;
    read(t);
    while(t--)
    {

        ll a,b,c;
        read(a);
        read(b);
        read(c);
        if(a==b&&b==c)
        {

            if(a==0)
            {
                printf("YES\n");
                printf("1 1 1\n");
                continue;
            }

            printf("NO\n");
            continue;
        }

        if(a!=0&&b!=0&&c!=0)
        {
            ll fuck=1e9-10;
//1e9+1e9+1e9*(1e9-2)
            ll x,y,z;
            x=a;
            y=a*fuck+b+c;
            z=a*fuck+c;

            if((x%y==a)&&(y%z==b)&&(z%x==c))
            {
                printf("YES\n");
                printf("%lld %lld %lld\n",x,y,z);
                continue;
            }
// a+b+c   b+c

            x=a+b+c*fuck;
            y=b+c*fuck;
            z=c;
            if((x%y==a)&&(y%z==b)&&(z%x==c))
            {
                printf("YES\n");
                printf("%lld %lld %lld\n",x,y,z);
                continue;
            }
            x=a+b*fuck;
            y=b;
            z=a+b*fuck+c;
            if((x%y==a)&&(y%z==b)&&(z%x==c))
            {
                printf("YES\n");
                printf("%lld %lld %lld\n",x,y,z);
                continue;
            }

            printf("NO\n");
            continue;
        }


        ll op=0;
        if(a==0)
            op++;
        if(b==0)
            op++;
        if(c==0)
            op++;
        if(op==2)
        {
     
            printf("YES\n");
            if(a!=0)
            {

                printf("%lld %lld %lld\n",a,2*a,2*a);

            }
            if(b!=0)
            {

                printf("%lld %lld %lld\n",2*b,b,2*b);

            }
            if(c!=0)
            {

                printf("%lld %lld %lld\n",2*c,2*c,c);

            }
            continue;
        }
        if(op==1)
        {

            ll need= 1e9-10;

            if(a==0)
            {

                printf("YES\n");

                if(b==1)
                {
                    need=need*10;
    

                }
                printf("%lld %lld %lld\n",need*b,b,need*b+c);
                continue;

            }
            if(b==0)
            {

                if(c==1)
                {
                    need=need*10;
            

                }
                printf("YES\n");
                printf("%lld %lld %lld\n",need*c+a,need*c,c);
                continue;
            }
            if(c==0)
            {

                if(a==1)
                {
                    need=need*10;
                }
                printf("YES\n");
                printf("%lld %lld %lld\n",a,need*a+b,need*a);
                continue;
            }

            continue;
        }

        printf("NO\n");

    }



}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值