博弈论的简单应用,每次操作只能选择一个大于1的数字x,选择x的一个大于1的因数y,让x变为x/y,等价于可以从一堆石子中拿出任意个,我们只要把x的所有质因子求出来,即是涛涛和策策对于这堆石子最多能拿的个数。
博弈论的原理可以看我的这篇博客。
#include <iostream>
#include <algorithm>
using namespace std;
int solve(int n)//求质因子的个数
{
int sum=0;
for(int i=2;i*i<=n;i++)
{
while(n%i==0)
{
n/=i;
sum++;
}
}
if(n>1) sum++;
return sum;
}
int main()
{
int n;
cin>>n;
int res=0;
while(n--)
{
int x;
scanf("%d",&x);
res^=solve(x);
}
if(res) cout<<"CC yyds!";
else cout<<"TT txdy!";
return 0;
}