SP16033 TIPTOP - Tip Top Game
题意
有一个正整数 ,找出它的所有因数,两个人轮流取走一个它的因数,取不到因数的人失败。
如果先手胜利,输出 Yes,否则输出 No。
分析
显然,当一个数的因数有奇数个时,先手会获胜;当一个数的因数有偶数个时,后手会获胜。
于是,这道题就变成了:判断一个数的因数个数是否为奇数。
于是它就变成了一道小学数学题。
对于一个数 ,,其中 和 都是整数且 ,则他们都是 的因数,若任意 ,说明 是成对出现的, 的因子有偶数个,反之,若某个 ,说明这对因子 只算一个,则 的因子有奇数个。所以我们只要判断 是否有为 的因子即可。
以上横线间的内容可以不看。
总之,我们只要判断 是否为完全平方数即可。
注意输出格式。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll t,n,a;
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n;
a=sqrt(n);
if(a*a==n)
printf("Case %d: Yes\n",i);
else
printf("Case %d: No\n",i);
}
return 0;
}

浙公网安备 33010602011771号