Pagini recente » Cod sursa (job #1058671) | Cod sursa (job #863418) | Cod sursa (job #2276066) | Cod sursa (job #1844320) | Cod sursa (job #1058667)
#include<stdio.h>
#define MOD 1000000007
#define MAX 1000000
int n,k;
long long a,sol,fact[MAX+10];
long long inv;
inline long long putere(long long a,int p)
{
long long sol=1;
for(;p;p>>=1)
{
if(p&1)
sol=(sol*a)%MOD;
a=(a*a)%MOD;
}
return sol;
}
inline long long inv_mod(long long n)
{
return putere(n,MOD-2);
}
// ((K!) ^ (N/K)) * ((K!) / ((K - N % K)!))
int main()
{
freopen("cabana.in","r",stdin);
freopen("cabana.out","w",stdout);
int t,i,p,r;
fact[0]=1;
for(i=1;i<=MAX;++i)
fact[i]=(fact[i-1]*i)%MOD;
scanf("%d",&t);
while(t--)
{
sol=1;
scanf("%lld%lld",&n,&k);
p=n/k;
r=n%k;
a=fact[k];
sol=putere(a,p);
a=fact[k-r];
a=(fact[k]*inv_mod(a));
sol=(sol*a)%MOD;
printf("%lld\n",sol);
}
return 0;
}