Cod sursa(job #3181905)

Utilizator MerlinTheWizardMelvin Abibula MerlinTheWizard Data 8 decembrie 2023 11:24:53
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include<bits/stdc++.h>

using namespace std;

const int MOD = 1e9 + 7, KMAX = 1e6 + 5;
long long n, k, fact[KMAX];

long long ridput(long long x, long long y)
{
	long long p = 1;
	
	if(x == 0) return 1;
	
	x = x % MOD;
	
	while(y > 0)
	{
		if(y & 1)
		{
			p *= x;
			p %= MOD;
		}	
		
		y >>= 1;
		
		x = (x * x) % MOD;
	}
	
	return p;
}

void query()
{
	cin >> n >> k;

	long long prim = ridput(fact[k], n / k);
	
	long long fact_sec = 1;

	
	fact_sec = ((fact[k] * ridput(fact[n % k], MOD - 2)) % MOD * ridput(fact[k - (n % k)], MOD - 2)) % MOD;	
	cout <<  (prim * fact_sec) % MOD << "\n";
	
}

int main()
{
	freopen("cabana.in", "r", stdin);
	freopen("cabana.out", "w", stdout);

	fact[0] = 1;
	for(int i = 1; i <= KMAX - 5; i++)
	{
		fact[i] = fact[i - 1] * i;
		fact[i] %= MOD;
	}

	int t;
	cin >> t;
	
	while(t--)
		query();
}