Pagini recente » Cod sursa (job #1186229) | Cod sursa (job #1530859) | Cod sursa (job #553697) | Cod sursa (job #838848) | Cod sursa (job #254417)
Cod sursa(job #254417)
#include <stdio.h>
long long A[21];
int B[31];
void acc(int x)
{
for (int i=x;i<30;i++) B[i] = B[i+1];
}
void solve(int n,long long k)
{
if (n)
if (k==0) printf("%d ",B[1]),acc(1),solve(n-1,k);
else if (n>20) printf("%d ",B[1]),acc(1),solve(n-1,k);
else
{
int x = 0;
while (x*A[n-1]<k) x++;
printf("%d ",B[x]);
acc(x);
k -= (x-1)*A[n-1];
solve(n-1,k);
}
}
int main()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
int n,k,i;
scanf("%d%d",&n,&k);
A[0] = 1;
for (i=1;i<=30;i++) B[i] = i;
for (i=1;i<=20;i++) A[i] = A[i-1]*i;
solve(n,k);
}