Cod sursa(job #254428)

Utilizator alexandru92alexandru alexandru92 Data 7 februarie 2009 12:04:53
Problema Planeta Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.53 kb
#include<stdio.h>
int n,p[50];
long  double k;
long double fact[50];
int main()
   {int i,j;
    FILE *f=freopen("planeta.in","rt",stdin),*g=freopen("planeta.out","wt",stdout);
    scanf("%ld %Lf",&n,&k);
    k--;
    fact[0]=1;
    for(i=1;i<=n;i++) fact[i]=i*fact[i-1];
    for(i=1;i<=n;i++)
       {
        p[i]=k/fact[n-i]+1;
        k-=(p[i]-1)*fact[n-i];
       }
    for(i=n-1;i>=1;i--)
      for(j=i+1;j<=n;j++)
         if(p[j]>=p[i]) p[j]++;
    for(i=1;i<=n;i++) printf("%ld ",p[i]);
    return 0;
    }