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");
}
}