题型:数论
题意:
.(1<=i<=n)
给出n和k,求出一个满足上式的全排列的序列a[ ]。
分析:
当k==0的时候,a[]就是“1,2,3,……,n”就可以了,当k!=0的时候,就使第一个数为1+k,后面的就按顺序跟着
“1,2,3……,n”(跳过k+1)即可,因为这样的数列带入式子中可以发现比将“1,2,3……,n”带入式子的结果相差k。
代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
int n,k;
int main(){
while(~scanf("%d%d",&n,&k)){
if(k==0){
for(int i=1;i<2*n;i++)
printf("%d ",i);
printf("%d\n",2*n);
}
else{
int start=1+k;
printf("%d",start);
for(int i=1;i<=2*n;i++){
if(i==start) continue;
printf(" %d",i);
}
printf("\n");
}
}
return 0;
}