传送门
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?' ':'
');
continue;
}
int temp=n%(m+1);
if(temp==0) printf("none
");
else printf("%d
",temp);
}
return 0;
}