hdu2149 巴什博奕

n表示先手胜 p表示先手负

1~N N+1 N+2~2*N+1 2*N+2 2*N+3~3*N+2 ...
n p n p n ...

m总归个数 每次取1~N个
根据前面的规律得到,如果m/N==m%N 那么必输,不然必胜。(可能不严谨,有些题目会错)

换一个角度就是每次要给对手留下(n+1)*k+s(k为整数)这样先手必胜。

也就是说m%(n+1)!=0,那么先手必胜。

#include<stdio.h>
#include<string.h>
#define maxn 1100
int main()
{
    int i,n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(m>=n)
        {
            for(i=n;i<=m;i++)
                if(i==n)printf("%d",i);
                else printf(" %d",i);
            printf("\n");
        }
        else if(n/m==n%m)
            printf("none\n");
        else
        {
            printf("%d\n",n%(1+m));
        }
    }
}

 

posted @ 2015-08-22 11:01  sweat123  阅读(123)  评论(0编辑  收藏  举报