HDU 1847 Good Luck in CET-4 Everybody!

题意: 两个人取n个数,每次能取2的幂个数,不能操作的输,问先手必胜或必败

注意到n很小,SG函数可以暴力推出来

推出来发现有n%3的规律

#include<bits/stdc++.h>

using namespace std;

const int MAXN = 1005;

int sg[MAXN];
int vis[MAXN],dfn;

int main(){
  for(int i=1;i<=1000;i++){
    ++dfn;
    for(int j=1;i-j>=0;j*=2){
      vis[sg[i-j]]=dfn;
    }
    for(int j=0;;j++){
      if(vis[j]!=dfn){
        sg[i]=j;
        break;
      }
    }
  }
  int x;
  while(cin>>x){
    if(sg[x]) puts("Kiki");
    else puts("Cici");
  }
  return 0;
}

本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/15127545.html

原文地址:https://www.cnblogs.com/ghostcai/p/15127545.html