C. SQRT? 描述 一天,Alice和Bob玩一个名字叫做“因数Game”的游戏,游戏的规则是这样的:游戏开始时会给出一个数字 xx ,然后Alice和Bob需要轮流说出 xx 的因数,不能重复地说一个因数。Alice先说,直到谁不能说了谁就输了。
因数的定义:如果 aa 是 bb 的因数,a≠0a =0 ,那么有 b%a=0b%a=0。
例如 x=2x=2 。Alice说 11 ,Bob说 22 ,此时Alice没有数字可以说了,所以Bob胜利。
输入 一行一个整数 xx 。(1 \leq x \leq 1e12)(1≤x≤1e12) 输出 如果Alice胜利,输出Alice,否则输出Bob。
这道题总是会超时,能各位大佬帮忙看看吗
#include <iostream>
using namespace std;
int main()
{
int n,i,j=0,s=2;
scanf("%d",&n);
if(n==1)
{
printf("Alice");
return 0;
}
for(i=2;i*i<=n;i++)
{
if(i*i==n)s++;
else if(n%i==0)s+=2;
}
//cout<<s<<endl;
if(s%2==0)
{
printf("Bob");
}
else printf("Alice");
}