我是奶龙

"我是奶龙"
"我才是奶龙"
"我会喷火,你会吗"
"我还会变色呢"

如果正着看问题比较难不妨反过来看,那么题意便是“一共有三种不同的颜色,现在给你n+m+k只相同颜色奶龙,每次可以从相同颜色堆数中取两只奶龙把它们变为两种和原来不同的颜色,问是否可以最终凑成三种颜色分别有n,m,k只奶龙。” 首先不妨假设n<=m<=k。第一种操作方式是从一开始的n+m+k这个大堆取出2*j只奶龙,分别放在另外两个堆中;第二种操作方式是从另外的小堆中取出2*x只奶龙,放进其他两堆中;不难发现操作方式一共只有这两种:
最终可能的排列情况只有三种。 那么便可列出方程:
判断一下最终解是否为整数即可
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[3];
void solve(){
    for(int i=0;i<3;i++)scanf("%lld",&a[i]);
    sort(a,a+3);
    int flag=0;
    if((a[1]-a[0])%3==0&&(2*a[1]+a[0])%3==0)flag=1;
    if((a[2]-a[0])%3==0&&(2*a[2]+a[0])%3==0)flag=1;
    if((a[2]-a[1])%3==0&&(2*a[2]+a[1])%3==0)flag=1;
    if(flag)printf("Yes\n");
    else printf("No\n");
}
signed main(){
    int t;
    scanf("%lld",&t);
    while(t--)solve();
    return 0;
}
posted on 2025-03-29 16:21  shaochang123  阅读(82)  评论(0)    收藏  举报