Ranking (as of 2014-08-26): 119 out of 847
Language: C++
/* UVa 941 - Permutations To build using Visual Studio 2012: cl -EHsc -O2 UVa_941_Permutations.cpp */ #include <vector> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; int main() { const int nr_chars_max = 20; long long factorials[nr_chars_max]; // factorials[i] is i! factorials[0] = factorials[1] = 1; for (int i = 2; i < nr_chars_max; i++) factorials[i] = factorials[i - 1] * i; int nr_samples; scanf("%d", &nr_samples); while (nr_samples--) { char S[nr_chars_max + 1]; long long N; scanf("%s", S); scanf("%lld", &N); int length = strlen(S); sort(S, S + length); vector<char> s(S, S + length), t; for (int i = length - 1; i; i--) { int j = N / factorials[i]; t.push_back(s[j]); s.erase(s.begin() + j); N %= factorials[i]; } t.push_back(s[0]); t.push_back('\0'); printf("%s\n", &t[0]); } return 0; }
No comments:
Post a Comment