题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714
nim游戏的一个变形,需要打出sg函数的表
#include <bits/stdc++.h> using namespace std; typedef long long LL; ; ], maxs; int vis[maxn]; //yu控制递归层数,cur控制所分配最大值,next控制所分配最小值 void dfs(int cur, int yu, int ans, int next) { ) { vis[ans]=; return ; } for(int i=next; i<cur; i++) dfs(cur, yu-, ans^sg[i], i); } void init() { sg[]=; ;i<=; i++) { memset(vis,,sizeof(vis)); dfs(i, , , ); ;;j++) if(!vis[j]) { sg[i]=j; break; } printf("%d\n", sg[i]); } } void print(int n) { ;i>=;i--) { ) cout<<; ; } cout<<endl; } int main() { init(); ;i<;i++) print(sg[i]); } //Process exited after 232.7 seconds with return value 0
#include <bits/stdc++.h> using namespace std; typedef unsigned long long uLL; , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , }; int cal(uLL x) { ; ;i<;i++) ) ret++; return ret; } int main() { int n; while(cin>>n) { ; while(n--) { uLL t; cin>>t; ans ^= sg[cal(t)]; } if(ans) puts("B"); else puts("L"); } }