Pagini recente » Cod sursa (job #2761693) | Cod sursa (job #500777) | Cod sursa (job #810490) | Cod sursa (job #511445) | Cod sursa (job #1056901)
#include<stdio.h>
#define EPS 1000000007
#define NMAX 1000001
long long laputere(long long base, long long exp) {
long long result = 1;
while (exp) {
if (exp & 1) result = (result * base) % EPS ;
exp >>= 1;
base = (base * base) % EPS;
}
return result;
}
int t, tt;
long long n, k, sol, f;
long long fact[NMAX];
int main() {
freopen("cabana.in", "r", stdin);
freopen("cabana.out", "w", stdout);
f = 1;
fact[0] = fact[1] = 1;
for (long i = 2; i < NMAX; ++i) {
fact[i] = (fact[i - 1] * i) % EPS;
}
scanf("%d", &t);
for (int tt = 1; tt <= t; ++tt) {
scanf("%lld%lld", &n, &k);
f = fact[k];
if (n > k) {
sol = laputere(fact[k] % EPS , n / k);
if (n % k != 0)
sol = sol * (f / fact[k - n % k]);
} else
sol = f / fact[k - n];
printf("%lld\n", sol % EPS);
}
return 0;
}