比赛的时候都推出来了和 质因子的指数和有关,硬是没做出来QWQ,我傻死算了

但其实这是一个结论题,因为这本来就是阶梯NIM游戏的模型。阶梯NIM游戏是指,有 n+1 阶台阶(0 ~ n),每阶上都有若干堆石子,每次操作从第i(i>0)阶的某一堆拿不超过这一堆数量的石子放到第i-1阶的某一堆中,不能操作者输。

显然普通的nim游戏就是1阶nim,拿到0阶就相当于扔了。、。。。

虽然我也不知道是怎么证的,但是结论就是: 当前游戏是必败态当且仅当 所有奇数阶上的每堆石子的异或和为0.

所以这个题xjb讨论计数一下就好啦QWQ,(我讨厌结论题QWQ)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1000000,ha=998244353;
inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}
inline int ksm(int x,int y){
int an=1;
for(;y;y>>=1,x=x*(ll)x%ha) if(y&1) an=an*(ll)x%ha;
return an;
} int zs[maxn/5],num[maxn+5],low[maxn+5];
int t,n,a[maxn+5],ans,pr[maxn+5];
bool v[maxn+5]; inline int read(){
int x=0; char ch=getchar();
for(;!isdigit(ch);ch=getchar());
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
return x;
} inline void init(){
low[1]=1; for(int i=2;i<=maxn;i++){
if(!v[i]) zs[++t]=i,low[i]=pr[i]=i,num[i]=1; for(int j=1,u;j<=t&&(u=zs[j]*i)<=maxn;j++){
v[u]=1,num[u]=num[i]+1,pr[u]=zs[j]; if(!(i%zs[j])){
low[u]=low[i]*zs[j];
break;
} low[u]=zs[j];
}
}
} inline void solve(){
int tot=0,can=0,Xor=0; for(int i=1;i<=n;i++) if(num[i]&1) Xor^=a[i]; for(int i=2,now,to;i<=n;i++){
now=i; for(;now!=1;now/=low[now]){
to=i/pr[now];
ADD(tot,add(a[i],0)); if(num[i]&1){
if((Xor^a[i])<=a[i]) ADD(can,1);
}
else{
if((Xor^a[to])<=a[i]+a[to]&&(Xor^a[to])>=a[to]) ADD(can,1);
}
}
} ans=can*(ll)ksm(tot,ha-2)%ha;
} int main(){
init(); while(scanf("%d",&n)==1){
for(int i=1;i<=n;i++) a[i]=read(); solve(); printf("%d\n",ans);
} return 0;
}

  

洛谷 - Sdchr 的邀请赛 T1 取石子的更多相关文章

  1. 洛谷 P4018 Roy&October之取石子

    洛谷 P4018 Roy&October之取石子 题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取 p^kpk 个(p为质 ...

  2. 洛谷P4018 Roy&October之取石子

    题目背景 \(Roy\)和\(October\)两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有\(n\)个石子,两人每次都只能取\(p^k\)个(\(p\)为质数,\(k\)为自然数,且 ...

  3. 洛谷——P4018 Roy&October之取石子

    P4018 Roy&October之取石子 题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取p^kpk个(p为质数,k为自 ...

  4. 洛谷P4860 Roy&October之取石子II 题解 博弈论

    题目链接:https://www.luogu.org/problem/P4860 和<P4018 Roy&October之取石子>一样的推导思路,去找循环节. 可以发现:只要不能被 ...

  5. 洛谷P4018 Roy&October之取石子 题解 博弈论

    题目链接:https://www.luogu.org/problem/P4018 首先碰到这道题目还是没有思路,于是寻思还是枚举找一找规律. 然后写了一下代码: #include <bits/s ...

  6. 洛谷 - Sdchr 的邀请赛 T4 信息传递

    (乱搞艹爆正解系列) 对不起,由于博主太弱了,并不会正解的多项式exp(甚至多项式exp我都不会2333). 只能来说一说我是怎么乱搞的啦QWQ 首先这个题最关键的性质是: 一个在原置换 g 中长度为 ...

  7. 洛谷【P1004】方格取数

    浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:https://www.luogu.org/problemnew/show/P ...

  8. 洛谷大宁的邀请赛~元旦祭F: U17264 photo(线段树)

    标程的写法稍微有点麻烦,其实不需要平衡树也是可以做的. 线段树上维护从左端点开始最远的有拍照的长度,以及区间的最大值. 考虑两段区间合并的时候,显然左区间必须取,右区间的第一个比左区间最大值大的数开始 ...

  9. 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring

    题目描述 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位--译者注) 他的最好的牛奶,并把它装入一个大瓶子中卖出.消费者要多少,他就给多少,从不有 ...

随机推荐

  1. Codeforces Round #524 (Div. 2) A. Petya and Origami

    A. Petya and Origami 题目链接:https://codeforc.es/contest/1080/problem/A 题意: 给出n,k,k表示每个礼品里面sheet的数量(礼品种 ...

  2. Codeforces Round #520 (Div. 2) B. Math

    B. Math time limit per test:1 second memory limit per test:256 megabytes Description: JATC's math te ...

  3. TOM的show_space

    show_space查看对像数据块的空闲情况 CREATE OR REPLACE PROCEDURE show_space(p_segname IN VARCHAR2, p_owner IN VARC ...

  4. matlab求矩阵的鞍点

    function count = andian(a) v = max(a,[],2); count = 0; for i=1:length(v) [r2,c2] = find(a==v(i)); mi ...

  5. javaScript获取文档中所有元素节点的个数

    HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  6. Visual Studio Code 配置C/C++环境

    0. 前言 VS Code 是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言. 本文面向初学者(但不是纯小白),分享一点我配置C/C++的经验. 本文所有内容均 ...

  7. cmd常用命令行

    新建文件夹或文件 打开磁盘     F: 退出cmd     exit 返回上一级     cd.. 创建文件夹     md 文件夹名 在d盘创建文件夹     md d:\文件夹名 在当前目录打开 ...

  8. kafka+flume+HDFS日志采集项目框架

    1,项目图如下: 2, 实现过程 启动HDFS: sbin/start-dfs.sh 启动zookeeper(三台): bin/zkServer.sh start 启动kafka(三台): root@ ...

  9. python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

    对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(sel ...

  10. 转: Java安全停止线程方法

    转: http://blog.csdn.net/flyingpig4/article/details/7675557 1.早期Java提供java.lang.Thread类型包含了一些列的方法star ...