题目大意:
给出n,k,构造出一个n的全排列P,使得对于 1~n 中任意的数 i,P 都存在一个长为 i 的子区间,其和模 n 余 k。有解输出任意一组,无解输出 -1。
思路分析:
#include<stdio.h>
#include<iostream>
#include<cstdio>
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;
}