0
点赞
收藏
分享

微信扫一扫

hdu4861 找规律了

zhaoxj0217 2022-07-27 阅读 70

题意:
     给你k个球和一个整数p,每个球的价值是 1^i+2^i+...+(p-1)^i (mod p),两个人轮流取球,最后谁的总价值也大谁就赢,问你先手能不能赢。


思路:
     一开始我的感觉是无论怎么样先手都会赢,结果一看给的测试数据,soga那么也就只有两中情况,先手赢或者平手(真不公平),据说是数学题,反正我是不会推,直接打个表看一下,发现规律很水啊,下面给出打表代码和ac代码。

ac代码

#include<stdio.h>

int main ()

{

int k ,p;

while(~scanf("%d %d" ,&k ,&p))

{

k/(p-1)%2 ? puts("YES") : puts("NO");

}

return 0;

}



打表代码

#include<stdio.h>

#include<math.h>

int main ()

{

int i ,j ,sum;

printf("10 3\n");

for(i = 1 ;i <= 10 ;i ++)

{

sum = 0;

for(j = 1 ;j < 3 ;j ++)

sum = sum + int (pow(j * 1.0 ,i * 1.0)) % 3;

printf("%d " ,sum % 3);

}



printf("\n10 5\n");

for(i = 1 ;i <= 10 ;i ++)

{

sum = 0;

for(j = 1 ;j < 5 ;j ++)

sum = sum + int (pow(j * 1.0 ,i * 1.0)) % 5;

printf("%d " ,sum % 5);

}

getchar();

}

举报

相关推荐

0 条评论