题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4861
题意:k个球,每个球都有自己的价值计算公式,两个人依次拿球,要使所拿球的价值总和最大,问第一个人能否获胜。每个球价值计算公式:1^i+2^i+...+(p-1)^i (mod p). Number p is a prime number
分析:p(1<k,p<2^31),pk的范围太大,时间是一秒,所以一定是一个找规律的题。
代码:
#include<bits/stdc++.h> using namespace std; #define LL __int64 const LL inf=1000000007; int main() { int k,p; while(scanf("%d %d",&k,&p)!=EOF) { if((k/(p-1))%2) printf("YES "); else printf("NO "); } return 0; }