http://acm.hdu.edu.cn/showproblem.php?pid=2149
簡單的bash博弈,如果滿足m%(n+1)==0,則先手敗(必敗態),因為可以這樣想:每輪後手總可以造出n+1這樣的情況,最後明顯是後手必勝。
但是當m%(n+1)!=0,則先手要不敗就應該取m%(n+1)的餘數,因為當第一次先手取這個餘數後,就變成了後手的必敗態。
#include <vector>#include <list>#include <map>#include <set>#include <queue>#include <string.h>#include <deque>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iostream>#include <iomanip>#include <cstdio>#include <cmath>#include <cstdlib>#include <limits.h>using namespace std;int lowbit(int t){return t&(-t);}int countbit(int t){return (t==0)?0:(1+countbit(t&(t-1)));}int gcd(int a,int b){return (b==0)?a:gcd(b,a%b);}#define LL __int64#define pi acos(-1)#define N 100010#define INF INT_MAX#define eps 1e-8int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF) { if(m%(n+1)==0) { printf("none\n"); continue; } if(n>=m) { int flag=0; for(int i=m;i<=n;i++) { if(flag) printf(" %d",i); else printf("%d",i); flag=1; } printf("\n"); continue; } printf("%d\n",m%(n+1)); } return 0;}