2020牛客暑期多校训练营(第六场)E——Easy Construction

题目链接

2020牛客暑期多校训练营(第六场)E——Easy Construction_第1张图片
2020牛客暑期多校训练营(第六场)E——Easy Construction_第2张图片
题目大意:

给出n,k,构造出一个n的全排列P,使得对于 1~n 中任意的数 i,P 都存在一个长为 i 的子区间,其和模 n 余 k。有解输出任意一组,无解输出 -1。

思路分析:

2020牛客暑期多校训练营(第六场)E——Easy Construction_第3张图片

#include
#include
#include
using namespace std;
int main()
{
	int n,m,k;
	scanf("%d%d",&n,&k);
	if((n*(n+1)/2)%n!=k)	printf("-1\n");
	else
	{
		int t=n/2;
		if(n%2==1)
		{
			for(int i=1;i<=t;i++)
			printf("%d %d ",n-i+1,i);
			printf("%d\n",n/2+1);  //此处换行,结束
		}
		else if(n%2==0)
		{
			printf("%d %d ",n,t);//注意空格
			for(int i=1;i<t;i++)
			printf("%d %d ",i,n-i);//空格
		}
		
	}
	
	return 0;
}  

你可能感兴趣的:(牛客2020多校联赛)