hdoj 2149 Public Sale (巴什博弈)

传送门
1846的升级版,同样也是巴什博弈,但是它可取的数量是大于初始数量的。
但也不难,如果 \(m>n\) 的话,直接按照巴什博弈的思路,先手要取 \(m\% (n+1)\) 个才能取胜,当然如果 \(m\% (n+1)=0\) 的话,先手必败
如果是 \(m<=n\) 的话,先手可以直接取 \(m...n\) 个,都可取胜
这道题就解决了

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int n,m;

int main(){
    while(scanf("%d%d",&n,&m)!=EOF){
        if(m>=n){
            for(int i=n;i<=m;i++) 
                printf("%d%c",i,i<m?' ':'\n');
            continue;
        }
        int temp=n%(m+1);
        if(temp==0) printf("none\n");
        else printf("%d\n",temp);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/BakaCirno/p/11820665.html