NC236214 石子游戏
题目链接
关键点:
1、该题目与NIM博弈相同,若所有石子数的异或和为0,则先手必败,反之先手必胜
完整代码:
# include <bits/stdc++.h>
using namespace std;
int n, res, a;
int main()
{
cin>>n;
for (int i=1; i<=n; i++)
{
cin>>a;
res^=a;
}
if (res)
cout<<"Alice";
else
cout<<"Bob";
return 0;
}
NC223888 红色和紫色
题目链接
关键点:
1、观察发现,若n*m为奇数时,则先手可以先涂中心的方格,然后开始与后手对称涂格子。若为偶数,那么后手只要与先手涂对称的格子即可。
完整代码:
# include <bits/stdc++.h>
using namespace std;
int n, m;
int main()
{
scanf("%d%d", &n, &m);
if (n*m%2)
printf("akai");
else
printf("yukari");
return 0;
}
NC201610 Game
题目链接
关键点:
1、当集合中全剩下质因子时,那么就不可以再分解了。因此我们计算要经过多少步使集合中只剩下质因子。
2、计算给出的数的质因子的个数cnt,那么只cnt-1即为要经过的步数,若该数为奇数,则先手必胜,否则,先手必败
完整代码:
# include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
scanf("%d", &n);
if (n == 1)
cout<<"Nancy";
else
{
int cnt = 0;
for (int i=2; i<=n; i++)
{
while(n%i == 0)
{
n/=i;
cnt++;
}
}
cnt--;
if (cnt%2)
cout<<"Johnson";
else
cout<<"Nancy";
}
return 0;
}