[2004年NOIP普及组] 火星人
- 分析:根据题意,要在题中给出的排列组合的基础上,加上m,形成一个新的排列组合。因为全排列是按照从小到大的顺序进行的,所以我们可以转化为全排列问题,m是几就代表进行几次全排列,所以进行m次全排列后的数就是题目中要求的数。在这里有一个全排列函数next_permutation,每调用一次就进行一次全排列。
-
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,m,a[10001];
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
next_permutation(a+1,a+n+1);//全排列函数
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}