HDU 3951 Coin Game (博弈)

    xiaoxiao2026-03-03  8

    题意:

    t个样例,每次给你n和k,n是一共有的硬币数,k是你每次最多取得硬币数。 注意:你如果想要取5个硬币(假设能取),那么你必须保证这些硬币是连续的,就是说这些硬币之间不能有空位。

    思路:

    跟之前的一道题思路差不多。 http://blog.csdn.net/wing_wuchen/article/details/52122914 当k为1时,直接判断奇偶来决定结果。 当k不为1时,如果先手不能一次取完,那么总有后手可以取先手的中心对称的位置来获胜。因为中心对称可以保证不连续的性质也是中心对称。

    AC代码:

    #include <iostream> #include <cstdio> using namespace std; int main() { int t; cin>>t; int n,k; int cas = 0; while(t--){ cas++; scanf("%d%d",&n,&k); printf("Case %d: ",cas); if(k == 1){ if(n&1) puts("first"); else puts("second"); } else{ if(n <= k) puts("first"); else puts("second"); } } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1307568.html
    最新回复(0)