P1207 吃糖果

博客探讨了一道算法题目,涉及糖果分配的问题。通过分析发现,关键在于糖果的个位数字,当个位为2、3、7、8时,对方有必胜策略。通过模5运算可以简化判断条件,无需使用高精度计算。文章提供了简单的SG表来揭示规律,并指出只需检查最后一位数字即可确定胜负情况。
摘要由CSDN通过智能技术生成

样例输入

1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5

样例输出

Matrix67
Matrix67
Matrix67
Matrix67
Matrix67
Matrix67
Shadow
Shadow
Matrix67
Matrix67

思路:首先看数据里面有10000位的数,不是10000,是10^10000。所以高精度这大数加减,不优化必须超时。由此断定,这个题应该和这些无关。接下来思考,对于这些糖果,2,3和22,23甚至1234562,932643有区别?除了个位以外前面爱怎么分怎么分,确切的说是分成一个很小的数+一大堆(这一大堆自己全部吃掉),这样把小的这一坨分成没有1,这样对方应该会赢。接下来讨论这个小的一坨怎么让对方分。先申明,如果对方剩下一堆k个给自己的时候自己是必输,那么对方分2个k给自己就必输(想一想,为什么) 按照这个思路考虑k:对于2,只能分成1 1,认了吧~ 同理3也只能分成1 2,认了吧~比如4,5,6给自己之后,分成2 2,2 3,3 3自己就赢了。7分成1和6显然嘛 如果是2和5,对方吃掉2再把5分成2 3,认了吧~ 如果是3和4,他就吃掉3,把4分成2 2…… 所以7是必输可以证明8也是必输的,9和0(10)必胜,这个问题留给读者下来思考。所以问题就只有一句话,如果这两堆的个位数字都是{2,3,7,8}里面的一个,就是对方必胜,否则自己必胜。代码几行也就可以了。

【伪题解】先写个SG暴力打表找规律

#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int N,sg[250][250];
bool F[100];
int main()
{
    freopen("table.txt","w",stdout);
    int s,i,j,k;
    N=50;
    for(i=1;i<=N;i++)sg[i][1]=sg[1][i]=1;
    for(s=4;s<=(N<<1);s++)
        for(i=2;i<=N&&s-i>=2;i++)
        {
            j=s-i;
            memset(F,0,sizeof(F));
            for(k=1;k<j;k++)F[sg[k][j-k]]=true;
            for(k=1;k<i;k++)F[sg[k][i-k]]=true;
            for(k=0;F[k]==true;k++);
            sg[i][j]=k;
        }
    for(i=1;i<=N;i++)
    {
        for(j=1;j<=N;j++)
        {
            printf("sg[%2d][%2d]=",i,j);
            if(sg[i][j]==0)printf("  0 ");
            else printf("%d   ",sg[i][j]);   //这个地方突出0是为了方便观察
        }
        printf("\n");
    }
    return 0;
}

 然后就打出了这样一个表:
 

sg[ 1][ 1]=1   sg[ 1][ 2]=1   sg[ 1][ 3]=1   sg[ 1][ 4]=1   sg[ 1][ 5]=1   sg[ 1][ 6]=1   sg[ 1][ 7]=1   sg[ 1][ 8]=1   sg[ 1][ 9]=1   sg[ 1][10]=1   sg[ 1][11]=1   sg[ 1][12]=1   sg[ 1][13]=1   sg[ 1][14]=1   sg[ 1][15]=1   sg[ 1][16]=1   sg[ 1][17]=1   sg[ 1][18]=1   sg[ 1][19]=1   sg[ 1][20]=1   sg[ 1][21]=1   sg[ 1][22]=1   sg[ 1][23]=1   sg[ 1][24]=1   sg[ 1][25]=1   sg[ 1][26]=1   sg[ 1][27]=1   sg[ 1][28]=1   sg[ 1][29]=1   sg[ 1][30]=1   sg[ 1][31]=1   sg[ 1][32]=1   sg[ 1][33]=1   sg[ 1][34]=1   sg[ 1][35]=1   sg[ 1][36]=1   sg[ 1][37]=1   sg[ 1][38]=1   sg[ 1][39]=1   sg[ 1][40]=1   sg[ 1][41]=1   sg[ 1][42]=1   sg[ 1][43]=1   sg[ 1][44]=1   sg[ 1][45]=1   sg[ 1][46]=1   sg[ 1][47]=1   sg[ 1][48]=1   sg[ 1][49]=1   sg[ 1][50]=1   
sg[ 2][ 1]=1   sg[ 2][ 2]=  0 sg[ 2][ 3]=  0 sg[ 2][ 4]=2   sg[ 2][ 5]=2   sg[ 2][ 6]=3   sg[ 2][ 7]=  0 sg[ 2][ 8]=  0 sg[ 2][ 9]=4   sg[ 2][10]=4   sg[ 2][11]=2   sg[ 2][12]=  0 sg[ 2][13]=  0 sg[ 2][14]=3   sg[ 2][15]=3   sg[ 2][16]=5   sg[ 2][17]=  0 sg[ 2][18]=  0 sg[ 2][19]=2   sg[ 2][20]=2   sg[ 2][21]=4   sg[ 2][22]=  0 sg[ 2][23]=  0 sg[ 2][24]=3   sg[ 2][25]=3   sg[ 2][26]=2   sg[ 2][27]=  0 sg[ 2][28]=  0 sg[ 2][29]=7   sg[ 2][30]=7   sg[ 2][31]=8   sg[ 2][32]=  0 sg[ 2][33]=  0 sg[ 2][34]=2   sg[ 2][35]=2   sg[ 2][36]=3   sg[ 2][37]=  0 sg[ 2][38]=  0 sg[ 2][39]=4   sg[ 2][40]=4   sg[ 2][41]=2   sg[ 2][42]=  0 sg[ 2][43]=  0 sg[ 2][44]=3   sg[ 2][45]=3   sg[ 2][46]=5   sg[ 2][47]=  0 sg[ 2][48]=  0 sg[ 2][49]=2   sg[ 2][50]=2   
sg[ 3][ 1]=1   sg[ 3][ 2]=  0 sg[ 3][ 3]=  0 sg[ 3][ 4]=2   sg[ 3][ 5]=2   sg[ 3][ 6]=3   sg[ 3][ 7]=  0 sg[ 3][ 8]=  0 sg[ 3][ 9]=4   sg[ 3][10]=4   sg[ 3][11]=2   sg[ 3][12]=  0 sg[ 3][13]=  0 sg[ 3][14]=3   sg[ 3][15]=3   sg[ 3][16]=5   sg[ 3][17]=  0 sg[ 3][18]=  0 sg[ 3][19]=2   sg[ 3][20]=2   sg[ 3][21]=4   sg[ 3][22]=  0 sg[ 3][23]=  0 sg[ 3][24]=3   sg[ 3][25]=3   sg[ 3][26]=2   sg[ 3][27]=  0 sg[ 3][28]=  0 sg[ 3][29]=7   sg[ 3][30]=7   sg[ 3][31]=8   sg[ 3][32]=  0 sg[ 3][33]=  0 sg[ 3][34]=2   sg[ 3][35]=2   sg[ 3][36]=3   sg[ 3][37]=  0 sg[ 3][38]=  0 sg[ 3][39]=4   sg[ 3][40]=4   sg[ 3][41]=2   sg[ 3][42]=  0 sg[ 3][43]=  0 sg[ 3][44]=3   sg[ 3][45]=3   sg[ 3][46]=5   sg[ 3][47]=  0 sg[ 3][48]=  0 sg[ 3][49]=2   sg[ 3][50]=2   
sg[ 4][ 1]=1   sg[ 4][ 2]=2   sg[ 4][ 3]=2   sg[ 4][ 4]=2   sg[ 4][ 5]=2   sg[ 4][ 6]=3   sg[ 4][ 7]=3   sg[ 4][ 8]=4   sg[ 4][ 9]=4   sg[ 4][10]=4   sg[ 4][11]=2   sg[ 4][12]=2   sg[ 4][13]=5   sg[ 4][14]=3   sg[ 4][15]=3   sg[ 4][16]=5   sg[ 4][17]=6   sg[ 4][18]=2   sg[ 4][19]=2   sg[ 4][20]=2   sg[ 4][21]=4   sg[ 4][22]=4   sg[ 4][23]=3   sg[ 4][24]=3   sg[ 4][25]=3   sg[ 4][26]=2   sg[ 4][27]=2   sg[ 4][28]=7   sg[ 4][29]=7   sg[ 4][30]=7   sg[ 4][31]=8   sg[ 4][32]=8   sg[ 4][33]=2   sg[ 4][34]=2   sg[ 4][35]=2   sg[ 4][36]=3   sg[ 4][37]=4   sg[ 4][38]=4   sg[ 4][39]=4   sg[ 4][40]=4   sg[ 4][41]=2   sg[ 4][42]=2   sg[ 4][43]=5   sg[ 4][44]=3   sg[ 4][45]=3   sg[ 4][46]=5   sg[ 4][47]=6   sg[ 4][48]=2   sg[ 4][49]=2   sg[ 4][50]=2   
sg[ 5][ 1]=1   sg[ 5][ 2]=2   sg[ 5][ 3]=2   sg[ 5][ 4]=2   sg[ 5][ 5]=2   sg[ 5][ 6]=3   sg[ 5][ 7]=3   sg[ 5][ 8]=4   sg[ 5][ 9]=4   sg[ 5][10]=4   sg[ 5][11]=2   sg[ 5][12]=2   sg[ 5][13]=5   sg[ 5][14]=3   sg[ 5][15]=3   sg[ 5][16]=5   sg[ 5][17]=6   sg[ 5][18]=2   sg[ 5][19]=2   sg[ 5][20]=2   sg[ 5][21]=4   sg[ 5][22]=4   sg[ 5][23]=3   sg[ 5][24]=3   sg[ 5][25]=3   sg[ 5][26]=2   sg[ 5][27]=2   sg[ 5][28]=7   sg[ 5][29]=7   sg[ 5][30]=7   sg[ 5][31]=8   sg[ 5][32]=8   sg[ 5][33]=2   sg[ 5][34]=2   sg[ 5][35]=2   sg[ 5][36]=3   sg[ 5][37]=4   sg[ 5][38]=4   sg[ 5][39]=4   sg[ 5][40]=4   sg[ 5][41]=2   sg[ 5][42]=2   sg[ 5][43]=5   sg[ 5][44]=3   sg[ 5][45]=3   sg[ 5][46]=5   sg[ 5][47]=6   sg[ 5][48]=2   sg[ 5][49]=2   sg[ 5][50]=2   
sg[ 6][ 1]=1   sg[ 6][ 2]=3   sg[ 6][ 3]=3   sg[ 6][ 4]=3   sg[ 6][ 5]=3   sg[ 6][ 6]=3   sg[ 6][ 7]=3   sg[ 6][ 8]=4   sg[ 6][ 9]=4   sg[ 6][10]=4   sg[ 6][11]=5   sg[ 6][12]=5   sg[ 6][13]=5   sg[ 6][14]=3   sg[ 6][15]=3   sg[ 6][16]=5   sg[ 6][17]=6   sg[ 6][18]=6   sg[ 6][19]=6   sg[ 6][20]=6   sg[ 6][21]=4   sg[ 6][22]=4   sg[ 6][23]=3   sg[ 6][24]=3   sg[ 6][25]=3   sg[ 6][26]=7   sg[ 6][27]=7   sg[ 6][28]=7   sg[ 6][29]=7   sg[ 6][30]=7   sg[ 6][31]=8   sg[ 6][32]=8   sg[ 6][33]=3   sg[ 6][34]=3   sg[ 6][35]=3   sg[ 6][36]=3   sg[ 6][37]=4   sg[ 6][38]=4   sg[ 6][39]=4   sg[ 6][40]=4   sg[ 6][41]=5   sg[ 6][42]=5   sg[ 6][43]=5   sg[ 6][44]=3   sg[ 6][45]=3   sg[ 6][46]=5   sg[ 6][47]=6   sg[ 6][48]=6   sg[ 6][49]=6   sg[ 6][50]=6   
sg[ 7][ 1]=1   sg[ 7][ 2]=  0 sg[ 7][ 3]=  0 sg[ 7][ 4]=3   sg[ 7][ 5]=3   sg[ 7][ 6]=3   sg[ 7][ 7]=  0 sg[ 7][ 8]=  0 sg[ 7][ 9]=4   sg[ 7][10]=4   sg[ 7][11]=5   sg[ 7][12]=  0 sg[ 7][13]=  0 sg[ 7][14]=3   sg[ 7][15]=3   sg[ 7][16]=5   sg[ 7][17]=  0 sg[ 7][18]=  0 sg[ 7][19]=6   sg[ 7][20]=6   sg[ 7][21]=4   sg[ 7][22]=  0 sg[ 7][23]=  0 sg[ 7][24]=3   sg[ 7][25]=3   sg[ 7][26]=7   sg[ 7][27]=  0 sg[ 7][28]=  0 sg[ 7][29]=7   sg[ 7][30]=7   sg[ 7][31]=8   sg[ 7][32]=  0 sg[ 7][33]=  0 sg[ 7][34]=3   sg[ 7][35]=3   sg[ 7][36]=3   sg[ 7][37]=  0 sg[ 7][38]=  0 sg[ 7][39]=4   sg[ 7][40]=4   sg[ 7][41]=5   sg[ 7][42]=  0 sg[ 7][43]=  0 sg[ 7][44]=3   sg[ 7][45]=3   sg[ 7][46]=5   sg[ 7][47]=  0 sg[ 7][48]=  0 sg[ 7][49]=6   sg[ 7][50]=6   
sg[ 8][ 1]=1   sg[ 8][ 2]=  0 sg[ 8][ 3]=  0 sg[ 8][ 4]=4   sg[ 8][ 5]=4   sg[ 8][ 6]=4   sg[ 8][ 7]=  0 sg[ 8][ 8]=  0 sg[ 8][ 9]=4   sg[ 8][10]=4   sg[ 8][11]=5   sg[ 8][12]=  0 sg[ 8][13]=  0 sg[ 8][14]=5   sg[ 8][15]=5   sg[ 8][16]=5   sg[ 8][17]=  0 sg[ 8][18]=  0 sg[ 8][19]=6   sg[ 8][20]=6   sg[ 8][21]=4   sg[ 8][22]=  0 sg[ 8][23]=  0 sg[ 8][24]=7   sg[ 8][25]=7   sg[ 8][26]=7   sg[ 8][27]=  0 sg[ 8][28]=  0 sg[ 8][29]=7   sg[ 8][30]=7   sg[ 8][31]=8   sg[ 8][32]=  0 sg[ 8][33]=  0 sg[ 8][34]=4   sg[ 8][35]=4   sg[ 8][36]=4   sg[ 8][37]=  0 sg[ 8][38]=  0 sg[ 8][39]=4   sg[ 8][40]=4   sg[ 8][41]=5   sg[ 8][42]=  0 sg[ 8][43]=  0 sg[ 8][44]=5   sg[ 8][45]=5   sg[ 8][46]=5   sg[ 8][47]=  0 sg[ 8][48]=  0 sg[ 8][49]=6   sg[ 8][50]=6   
sg[ 9][ 1]=1   sg[ 9][ 2]=4   sg[ 9][ 3]=4   sg[ 9][ 4]=4   sg[ 9][ 5]=4   s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值