Cod sursa(job #254417)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 7 februarie 2009 12:01:21
Problema Planeta Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.6 kb
#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);

}