简单的博弈题,用dp解;
每个人只能拿1,l,k个硬币;
dp[i][j]表示第j个人拿是否能拿第i枚硬币;
代码:
1 #include<cstdio> 2 #define maxn 1000007 3 using namespace std; 4 bool dp[maxn][2]; 5 int x,l,m,k; 6 7 int main() 8 { 9 scanf("%d%d%d",&k,&l,&m); 10 for(int i=1;i<=1000000;i++) 11 for(int j=0;j<2;j++) 12 { 13 dp[i][j]|=1-dp[i-1][j^1]; 14 if(i>=l)dp[i][j]|=1-dp[i-l][j^1]; 15 if(i>=k)dp[i][j]|=1-dp[i-k][j^1]; 16 } 17 while(m--) 18 { 19 scanf("%d",&x); 20 printf("%c",'B'-dp[x][0]); 21 } 22 puts(""); 23 return 0; 24 }