PSERVICE - Permutations
A website provides its users with a variety of services. There are a total of K services available on that website. At present there are M users/clients registered to the website.
Now each client of this service provider firm is to be allocated a project by the website which makes use of a string A1, A2, A3 ... An of N services all of which the website is providing. The order in which the services are executed matters (compiling and then linking is different from linking and then compiling). Also, in a particular project, the same services cannot be executed twice in succession. For example, compiling → linking → compiling is allowed, but linking → linking → compiling is not allowed because 'linking' comes twice in succession.
All the M clients will start working at the same time and the time taken for the execution of all services is equal. At a time, one service can be accessed by only one client as there is only one server. For eg. If there are 3 clients with projects – A1, A2 ... An; B1, B2 ... Bn and C1, C2 ... Cn, then Ai, Bi, Ci are pairwise distinct for 1 <= i <= N. You need to find in how many ways in which the M clients can be allocated their projects.
Input
First line containing T (number of test cases).
For each test case one line containing 3 integers N, M and K.
Output
For each test case output a separate line containing the answer modulo 1000000007.
Constraints
1 <= T <= 10
0 <= N <= 1000000000
1 <= M <= 100
0 <= K <= 1000
Sample
Input 3 2 2 3 1 2 3 2 3 4 Output 18 6 264
hide comments
Surya kiran:
2013-09-05 20:48:39
I think "Now each client of this service provider firm is to be allocated a project" should make it clear that the Ai is chosen by the website but not by the client. |
|
Mitch Schwartz:
2013-09-05 20:48:39
For me the problem is unclear. I suppose the N services for each client aren't fixed (as we aren't given them as part of the input), and the intended interpretation is: How many ways are there to construct an MxN matrix A such that for all valid i,j,k, (1) A_{i,j} is in {1, 2, ... , K}, (2) A_{i,j} != A_{i,j+1}, (3) if i!=k then A_{i,j} != A_{k,j}. And in particular if M>K (and N>0) then I guess the answer is zero (if we try to understand it as a real-world problem, it simply means that some clients will need to wait some of the time, but for here I don't see any obvious way to fit it into a meaningful counting problem). This interpretation fits with the sample input/output, but I think a sentence like "The Ai are chosen by the website, not the client, and each Ai can be any of the K available services, provided that certain restrictions are met" after the first sentence of the second paragraph would make it much clearer. And I don't think "Ai != Bi != Ci" is a standard way to specify that Ai,Bi,Ci are (pairwise) distinct.
|
Added by: | Surya Kiran |
Date: | 2013-09-05 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ASM64 |
Resource: | Codeblitz-4 |