欢迎光临散文网 会员登陆 & 注册

CF竞赛题目讲解_CF317D(博弈论 + SG函数 + 整数方幂)

2022-11-22 10:02 作者:Clayton_Zhou  | 我要投稿

AC代码

 https://codeforces.com/contest/317/submission/181838688

题意:

 Vasya 和 Petya玩一个游戏,每人每次写一个x∈[1,n] 的正整数。

 当x 被写后,x 及x 的任意正整数幂都不能被写,写不了数字的人输。

 例如,如果在第一个回合选择了数字9,那么以后就不能选择9或81,而仍然可以选择3或27。

 假设 Vasya为先手,问当两边都是最佳操作时,谁能获胜。

 

 题解:

 如果x不是任一y(<x) 的正整数次幂,则把所有x的正整数次幂的数归为一类记为Pow(x),

 显然任意两类不交,那么问题变成若干相同的子问题.

 暴力打表求出SG(1)~SG(30). 注意任一类的规模不超过log2n , 

因为 n≤1e9,且 2^30>1e9 ,所以 log2n<30 。

 

 注意到如果x>sqrt(n),那么Pow(x) 规模是1,SG值为1.

 故只需要求出所有x≤sqrt(n)的Pow(x) 的规模对应的SG值且异或 ,

 再统计一下所有x>sqrt(n)且不是任意y(<x)y(<x)的正整数次幂的数的个数,

 奇数就对答案再异或1(SG(1)=1 )。


CF竞赛题目讲解_CF317D(博弈论 + SG函数 + 整数方幂)的评论 (共 条)

分享到微博请遵守国家法律