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;
}