Ok. Napisałem to sam. Gdyby komuś się miało przydac zamieszczam kod C++. Demon szybkości to to nie jest, ale działa troszkę szybciej od n!
:
Kod php:
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
long long int silnia(int k)
{
long long int wynik = 1;
while (k > 1)
{
wynik *= k;
k--;
}
return wynik;
}
int main()
{
int n;
long long int k, s, pom;
cin >> n >> k;
list<int> lista;
list<int>::iterator it;
for(int j = 1; j < n+1; j++) lista.push_back(j);
k--;
while(!lista.empty())
{
s = silnia(n-1);
pom = (k/s);
it = lista.begin();
for (int i = 0; i<pom; i++) it++;
cout << *it << " ";
lista.erase(it);
k %= s;
n--;
}
cout << endl;
return 0;
}
Znajdziesz nas na: