题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4861
题目大意:
有k个数,两个人轮流取,对于取到的数 i 。可以得到一个值: 1^i+2^i+...+(p-1)^i (mod p). 问最后先取的人能否取胜,取胜的标准是值的和更大。
解题思路:
比赛的时候用费马小定理得到当(p - 1)| k 时,该值为 p - 1。然后写了几个发现其他的情况都是0。猜了一下,1A了。
正确的解题思路:http://blog.sina.com.cn/s/blog_6bddecdc0102uy9g.html
代码:
int k, p;
int main () {
while(~scanf("%d%d", &k, &p)) {
int t = k / (p - 1);
if (t % 2 == 1) puts("YES");
else puts("NO");
}
}