题目
Hongrock为了打败宿敌潘萌萌学会了分身术,但Hongrock学的分身术只学了半桶水,并不能像漩涡鸣人一样分出和本体相同的能力的分身,他只能将自己的查克拉分摊到其他分身上,即所有分身的查克拉之和等于原本拥有的查克拉。但毫无疑问,这弱爆了。Hongrock为了充分运用自己学回来的新技能,他又找了仙人学会了Hongrock连弹,这是一个组合技,可以用自己的分身之间的配合,组合出毁天灭地的招式。而这个招式的伤害等于所有分身查克拉的乘积。那么问题来了,Hongrock可能否打败宿敌潘萌萌呢?(Hongrock可以分出任意多个分身,每个分身的查克拉都必须是正整数,即每个分身都要分配大于等于1的查克拉)
思路
如果查克拉为2或者3,肯定不能继续拆分,不然它的乘积会变小
如果是4,那么拆成
2
∗
2
2*2
2∗2是等价的,拆成
1
∗
3
1*3
1∗3是不好的
如果是5,拆成
2
∗
3
2 *3
2∗3是更优的
也就是说,对于大于4的,我一直拆出3,直到它小于等于4
结果就是
3
∗
3
∗
3
∗
…
…
∗
剩
余
的
数
字
3*3*3*……*剩余的数字
3∗3∗3∗……∗剩余的数字
代码
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int main()
{
ll a, b;
scanf("%lld %lld", &a, &b);
ll ans = 1;
if(a == 0 && b == 0)
{
return 0 * printf("Yes\n");
}
else if(a == 0 && b > 0)
{
return 0 * printf("No\n");
}
else
{
while(a > 4)
{
ans *= 3;
a -= 3;
if(ans >= b)
{
return 0 * printf("Yes\n");
}
}
ans *= a;
if(ans >= b)
{
return 0 * printf("Yes\n");
}
}
if(ans >= b)
{
return 0 * printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}