题解:P14069 初遇

· · 题解

这个蒟蒻赛时调了1个多小时

思路

容易发现,当 a = nb = na+b = n 时一定不行, a+b = n 时无论如何下一步操作之后 ab 中会有一个等于 n

然后, 当 a=b 时,如果有一个是 0 (设 a0),那么容易发现,只要一直将 b 变为 a+b (也就是 b 变为 b+0)就可以无限操作下去。如果 a \times 3 = n ,那么经过一次操作后你就会发现这时的 a+b=n ,明显不行。可以证明,当 a=b 时其他的情况都可以无限操作下去。

可以证明,除了上述情况之外都可以无限操作下去。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int a=0,b=0,n=0;
        cin>>a>>b>>n;
        if(a==n||b==n||a+b==n) cout<<"No"<<endl;
        else if(a==b)
        {
            if(a==0||b==0)cout<<"Yes"<<endl;
            else if(a*3==n)cout<<"No"<<endl;
            else cout<<"Yes"<<endl;
        }
        else cout<<"Yes"<<endl;
    }
}

完结撒花