HDU 4861 Couple doubi

前天刚到学校,很久没刷题,需要一段时间寻找状态。

这是22号的多校,我没赶上,现在重新写一下来帮助自己找回状态。

由于p一定是素数,打表可知循环节为p-1,并且只有p-1号球有价值。一开始题意理解错,以为必须从第一号球开始轮流拿,其实是任意顺序拿的。这样,求出总共可以拿到几次有价值的球k,如果k为奇数则代表doubiNan可以多拿一次,输出"YES",如果为偶数,那么他们拿的次数相等,输出"NO"。

 

#include <iostream>
#include <vector>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;

int k, p;

int main()
{
	while(~scanf("%d%d", &k, &p))
	{
		int n = k/(p-1);
		
		if(n & 1) printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}