Pagini recente » Cod sursa (job #3178808) | Cod sursa (job #3291321) | Cod sursa (job #174401) | Cod sursa (job #1498353) | Cod sursa (job #2403949)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("planeta.in");
ofstream g("planeta.out");
int n,a[32];
unsigned long long v[32],fact[32],k;
int incr(int j)
{
int k=j+1;
while(v[k])++k;
return k;
}
int main()
{
f>>n>>k;fact[0]=1;
for(int i=1;i<=20;++i)fact[i]=fact[i-1]*i;
for(int i=21;i<=30;++i)fact[i]=-1;
for(int i=1;i<=n;++i)
{
a[i]=incr(a[i]);
while(fact[n-i]<k)
{
a[i]=incr(a[i]);
k-=fact[n-i];
}
v[a[i]]=1;
}
for(int i=1;i<=n;++i)g<<a[i]<<' ';
}