HDU 4861 Couple doubi

来源:互联网 发布:淘宝手机版店招尺寸 编辑:程序博客网 时间:2024/05/16 10:23

题意:两个人玩游戏。游戏规则如下:有n张牌和一个素数p.牌的编号从1-n,第i张牌的值时:1^i + 2^i+...+(p-1)^i (mod p)(^为幂)。两个人轮流取牌。取玩牌后,计算每个人的牌的值的和,大的人赢。

思路:当时先打的表,惊人的发现,只有在i=k(p-1)时,牌的值不为零,其他情况下,均为零。且i=k(p-1)时,牌的值相同。

          所以思路就很简单了。判断有几个p-1周期,如果有奇数个,先手赢,如果有偶数个,先手不会赢。

         官方题解对上述结论的证明:2014 <wbr>Multi-University <wbr>Training <wbr>Contest <wbr>1--by <wbr>FZU <wbr>解题报告


坑:HDU long long 是I64d啊!!!!!!


代码如下:

#include <cstdio>using namespace std;long long n,p;int main(){    while(scanf("%I64d %I64d", &n,&p) != EOF)    {        long long res = n / (p-1);        if(res & 1)            printf("YES\n");        else            printf("NO\n");    }    return 0;}


0 0
原创粉丝点击