P10026 「HCOI-R1」哀之变化题解
Guoliyuan2023 · · 题解
学哥出的题,当然得写个题解啊
题目:P10026 「HCOI-R1」哀之变化
思路:
我们发现如果对
用最少的步数使
于是先分类讨论(第一步):
若
若
接下来处理剩余的次数。
我们欣喜的发现,竟然有周期哎!
于是乎,若剩余次数大于
对于剩余
最后,注意两点:
-
-
不要搞岔!!!
放上代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int T , n , m , a , b;
bool flag = 0;
cin >> T;
while(T --)
{
m = 0;
flag = 0;
b = 0;
cin >> a >> n;
if(n == 0)
{
if(a != 0)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
continue;
}
if(n == 1)
{
if(a == 1 || a == 3)
{
cout << "No" << endl;
}
else
{
cout << "Yes" << endl;
}
continue;
}
while(n > 1)
{
m ++;
if(n % 2 == 1)
{
if(m == 1)
{
flag = 1;
}
else
{
flag = 0;
}
}
if(n % 2)
{
n ++;
b = 1;
}
else
{
n /= 2;
}
}
if(((b == 0 || flag) && a - m == 1) || m > a)
{
cout << "No" << endl;
}
else
{
cout << "Yes" << endl;
}
}
return 0;
}