HDOJ4861:Couple doubi

题意:给出k个球和质数p,对每个球以公式val(i)=1^i+2^i+...+(p-1)^i (mod p)计算出它的价值,然后两个人轮流拿,最后拿到的球的总价值大的获胜,问我们先手是否获胜。

我们分成两种情况讨论:

情形1:i%(p-1)==0,即i是(p-1)的倍数,由费马小定理 a^(p-1)=1(mod p),可以套入公式得该球价值为 p-1;

情形2:i不是(p-1)的倍数,这时要用到原根的性质,对于一个正整数g和质数p,若g为p的原根,可将1,2,3...p-1表示为g^1,g^2,g^3...g^(p-1),那么

带入公式可得val(i)=1^i+2^i+...+(p-1)^i (mod p)=g^i+g^(2*i)+g^(3*i)+...+g^((p-1)*i),即可以用等比公式得到val(i)=(g^i * (g^i*(p-1) - 1)/(g^i-1),

由于费马小定理可得,val(i)=0;

那么既然val(i)只在i为(p-1)的倍数时为1,最后只要统计k是(p-1)的倍数,判断为奇则输出“YES”,否则为“NO";

相关资料:

http://baike.baidu.com/link?url=dJ6_gXINuYRpcHkyHrJ_DmFY8BnVQioHG3IOjajxzwnEHncWUvue_uz8exyr44sKMeZRE0MgIhv-17kpZwO12q

http://baike.baidu.com/link?url=nLUeG8Lxckv9FceAt_ceDZIP1K_RLncVYaOlbtp3M-LpZJXMqNJDcHZ1iUA5XTe0NVAILGhpYfi_jPe6bf3FGa

http://baike.baidu.com/link?url=WtHCJTPisLPTKNL4vDtSa-fHkEXSRfetxA_T_xZZxzeqdEEqKTxvTxSyIzuZLW_1leWJrLWv5QmBmaARW2FJgK

推荐blog:

http://blog.csdn.net/keshuai19940722/article/details/38050899

http://blog.csdn.net/RaAlGhul/article/details/51882067

 1 #include<cstdio>
 2
 3 int k,p;
 4
 5 int main()
 6 {
 7     while(scanf("%d%d",&k,&p)==2)
 8     {
 9         k/=(p-1);
10         if(k&1) puts("YES");
11         else puts("NO");
12     }
13 }

时间: 2024-10-10 00:36:25

HDOJ4861:Couple doubi的相关文章

HDU 4861 Couple doubi(数论)

HDU 4861 Couple doubi 题目链接 题意:给定k,p,有k个球,每个球的值为1^i+2^i+...+(p-1)^i (mod p) (1 <= i <= k),现在两人轮流取球,最后球的值总和大的人赢,问先手是否能赢 思路:先手不可能输,非赢即平,那么只要考虑每种球的值, 利用费马小定理或欧拉定理,很容易得到该函数的循环节为p - 1, 那么i如果为p - 1的倍数,即为循环节的位置,那么每个值都为1,总和为p - 1 如果i不在循环节的位置,任取一个原根g,根据原根的性质,

2014多校第一场A题 || HDU 4861 Couple doubi

题目链接 题意 : 有K个球,给你一个数P,可以求出K个值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望赢,如果女朋友能赢输出YES,否则输出NO 思路 :这个题,在纸上算算差不多就出来结果了,因为要赢,所以一开始必定拿大的,根据规律可以发现最后的那个取余结果不是0就是某个数,所以就看那个数有奇数个还是偶数个即可. 官方题解: 1 #include <stdio.h> 2 #include <string.h&g

HDU 4857 Couple doubi(找循环节)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4861 解题报告:桌子上有k个球 ,第i个球的价值wi = 1^i+2^i+...+(p-1)^i (mod p),现在两个人轮流取,如果第一个取的人最后得到的价值总和最大,输出YES,否则 输出NO . k和p的范围都很大,如果都算出来那是不可能的,所以一定是有规律的,所以我把前面的几个打表看了一下,果然有规律,第1.2.3.......(p-2),(p-1)个球的价值分别是: 0,0,0.....

HDU 4861(多校)1001 Couple doubi

Problem Description DouBiXp has a girlfriend named DouBiNan.One day they felt very boring and decided to play some games. The rule of this game is as following. There are k balls on the desk. Every ball has a value and the value of ith (i=1,2,...,k)

doubi -- 初创

doubi -- 初创 [背景分析] 一直在苦苦探寻人生的价值和意义.在这"二八"年华,对IT工作有点厌倦了.每天都是无休止地问题定位,需求会议.碎片化的时间写出来的代码都是无比的丑陋.忙忙碌碌,房子车子都还是奢侈品,老婆孩子还在未来世界.有时候想借钱付个首付把房子买了,但看着这苦逼无望的工作生活状态,还不如先攥点钱以备冲动.有时候想去买个车子,可惜从年头到年尾才挤出了2天时间学车.有时候想下定决心和女朋友把婚结了,但想想除了没房没车没事业还没时间陪她,拿什么去承诺,拿什么来让这终身大

hdu 4861 Couple doubi (找规律 )

题目链接 可以瞎搞一下,找找规律 题意:两个人进行游戏,桌上有k个球,第i个球的值为1i+2i+?+(p−1)i%p,两个人轮流取,如果DouBiNan的值大的话就输出YES,否则输出NO. 分析:解题报告 1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 int main() 6 { 7 int k, p; 8 while(cin>>k>>p) 9 { 10 if(k/

HDU-4861 Couple doubi

http://acm.hdu.edu.cn/showproblem.php?pid=4861 Couple doubi Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 675    Accepted Submission(s): 484 Problem Description DouBiXp has a girlfriend named

杭电hdu 4861 Couple doubi

杭电 2014多校联训第一场   1001   Couple doubi   逗比夫妇 这标题我就不多说什么了. 题意:有K个球在桌上,每个球都有价值,第i个球的价值是1^i+2^i+...+(p-1)^i (mod p).其中p是一个素数,之后逗比男先选球,最后所有球总分高的获胜.如果逗比男获胜,那么输出“YES”否则输出“NO”.(逗比男和逗比女都采取最有策略). 当然这也p是奇素数的一个重要公式.曾有题是这个公式求和.当然如果你知道就很简单了.如果不知道,就打表找规律吧. 根据这一重要的公

2014---多校训练一(A Couple doubi)

Couple doubi Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1087    Accepted Submission(s): 762 Problem Description DouBiXp has a girlfriend named DouBiNan.One day they felt very boring and dec