当前位置: 代码迷 >> 综合 >> HDOJ 几道博弈水题
  详细解决方案

HDOJ 几道博弈水题

热度:98   发布时间:2024-01-20 20:21:43.0

HDOJ 1847 SG函数入门(不用也行)基本博弈的理解。

#include<iostream>
using namespace std;int main()
{int n,list[1111];memset( list,0,sizeof(list) );for( int i=1;i<=1000;i++ )for( int k=1;i-k>=0;k*=2 ){if( list[i-k]==0 )list[i]=1;}while( scanf("%d",&n)!=EOF ){if( list[n] )printf( "Kiki\n" );elseprintf( "Cici\n" );}return 0;
}


HDOJ 1849 Nim的简单变形

#include<iostream>
using namespace std;int main()
{int n;while( scanf("%d",&n)!=EOF&&n ){int num,xo=0;for( int i=0;i<n;i++ ){scanf( "%d",&num );xo^=num;}if( xo )printf( "Rabbit Win!\n" );elseprintf( "Grass Win!\n" ); }return 0;
}


HDOJ 1850 Nim性质的理解

#include<iostream>
using namespace std;int main()
{int n;while( scanf("%d",&n)!=EOF&&n ){int num[111],xo=0;for( int i=0;i<n;i++ ){scanf( "%d",&num[i] );xo^=num[i];}if( xo==0 ){printf( "0\n" );continue;}int ans=0;for( int i=0;i<n;i++ )if( num[i]>=(num[i]^xo) )ans++;printf( "%d\n",ans );}
}