Game with Powers
题意:
有1~n,n个数字,两个人轮流操作,每一次一个人可以拿一个数字$x$,之后$x, x^2, x^3....x^t$全都被删掉。
给定n,问最优策略下谁赢。
解法:
考虑SG函数,可以注意到题目中取走$x$后,$x^2,x^3...$不可以取,类似石子合并问题。
对于1~n的数字可以分为两类:
1.不存在$x^t, t>1$,可以视为一堆只有一块石头的石子堆,$SG(1) = 0$。
2.存在$x^t, t>1$。
对于第一种情况,直接记录有多少个x满足条件即可,分奇偶讨论。
对于第二种情况,显然有$t<=30$,可以注意到最终$SG$值和$x$无关,这样打表预处理$sg(t)$表示$x^1,x^2...x^t$
对应的$SG$值,打表直接用$O(2^30)$状压即可(注意到$sg(t)<=30$,所以用char类型的sg数组即可节省空间)。
实际上有效的状态并不多,所以只要几秒钟(意外的快)。
最后求NIM和即可。
总效率$O(\sqrt{n}*logn)$
#include <iostream>
#include <cstdio>
#include <cstring> #define N 1000010
#define LL long long using namespace std; bool flag[N];
int n;
int SG[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}; int main()
{
scanf("%d",&n);
int sum=n;
int ans=;
for(LL i=;i*i<=n;i++)
{
if(flag[i]) continue;
int tmp=;
for(LL x=i;x<=n;x*=i)
{
if(x*x<=n) flag[x]=;
tmp++;
}
ans^=SG[tmp];
sum-=tmp;
}
ans ^= sum&;
if(ans==) puts("Petya");
else puts("Vasya");
return ;
}
Game with Powers的更多相关文章
- CodeForces 404C Ivan and Powers of Two
Ivan and Powers of Two Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & % ...
- Educational Codeforces Round 15 Powers of Two
Powers of Two 题意: 让求ai+aj=2的x次幂的数有几对,且i < j. 题解: 首先要知道,排完序对答案是没有影响的,比如样例7 1一对,和1 7一对是样的,所以就可以排序之后 ...
- Educational Codeforces Round 7 F - The Sum of the k-th Powers 拉格朗日插值
The Sum of the k-th Powers There are well-known formulas: , , . Also mathematicians found similar fo ...
- cf702B Powers of Two
B. Powers of Two time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...
- (Problem 29)Distinct powers
Consider all integer combinations ofabfor 2a5 and 2b5: 22=4, 23=8, 24=16, 25=32 32=9, 33=27, 34=81, ...
- UVA 10622 - Perfect P-th Powers(数论)
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...
- UVALive 6472 Powers of Pascal
标题手段: 他给了一个无限Pascal阵,定义了powers,然后询问power为P的pascal矩阵里面的第R行C列的元素是多少. 最開始读错题意了...然后 就成了一个神得不得了的题了.后来请教的 ...
- Educational Codeforces Round 15_B. Powers of Two
B. Powers of Two time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...
- The Super Powers
The Super Powers Time Limit: 1000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu [Subm ...
- Perfect Pth Powers poj1730
Perfect Pth Powers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16383 Accepted: 37 ...
随机推荐
- 内核顶层Makefile相关3
http://www.groad.net/bbs/simple/?f104.html 伪目标 .PHONY是一个特殊工作目标(special target),它用来指定一个假想的工作目标,也就是说它后 ...
- Android gdb so
gdb debug an android application 1.gdb 要有gdbserver 一般模拟器默认装有gdbserver,如2.3.3的模拟器,看一下有没有: D:\Develope ...
- git+jenkins
开发写代码的演变 一个开发单打独斗,撸代码,开发网站,自由自在 多个开发同时开发一个网站,同时改一份代码.但是同时改一个文件会导致冲突 分支结构,每天上班第一件事克隆代码,下班前最后一件事合并代码 好 ...
- docker--caffe
Running an official image You can run one of the automatic builds. E.g. for the CPU version: docker ...
- 【重磅干货】看了此文,Oracle SQL优化文章不必再看!
目录 SQL优化的本质 SQL优化Road Map 2.1 制定SQL优化目标 2.2 检查执行计划 2.3 检查统计信息 2.4 检查高效访问结构 2.5 检查影响优化器的参数 2.6 SQL语句编 ...
- 关于js开发的小问题
一.开发当中经常会动态拼接html,当然为了简便性好多人直接就是使用内联事件: $('#td1').html( '<a href="#" onclick="app. ...
- c# winform窗体间的传值
说明:本文讲解两个窗体之间的传值,主要用到两个窗体,form1,form2 1.在form1窗体单击按钮,打开窗体form2,然后把form2中文本框的值传递给form1 form1中的代码: usi ...
- mybatis入门小结(六)
入门小结---查询 1.1.1.1.1 #{}和${} #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以 ...
- xcode7和ios9下UIWebView不能加载网页的解决方法
错误描述: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecu ...
- linux iptables:安全应用,防火墙
iptables:安全应用,防火墙 windows和linux都有防火墙,企业的边缘会部署防火墙保证企业内部的局域网是安全的.针对个人电脑会有防火墙保证系统是安全的. 防火墙是唯一通道. 防火墙分类( ...