用卢卡斯写的 60pts,求调
查看原帖
用卢卡斯写的 60pts,求调
993779
FurippuWRY楼主2024/7/2 16:26

推出答案应该是 Ckm×an×bmC^m_k\times a^n\times b^m,但是 60 分。

#include <bits/stdc++.h>
#define int long long

using namespace std; 

const int mod = 10007;

int power(int a, int b, int m) {
	a %= m;
	int x = 1;
	while (b > 0) {
		if (b & 1) x = x * a % m;
		a = a * a % m;
		b >>= 1;
	}
	return x;
}
int c(int n, int m){
	if (n < m) return 0;
	if (m > n - m) m = n - m;
	int a = 1, b = 1;
	for (int i = 0; i < m; i++) {
		a = (a * (n - i)) % mod;
		b = (b * (i + 1)) % mod;
	}
	return a * power(b, mod - 2, mod);
}

int l(int n, int m) {
	if (!m) return 1;
	return (c(n % mod, m % mod) * l(n / mod, m / mod)) % mod;
}

int a, b, k, m, n;

signed main() {
	
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	
	cin >> a >> b >> k >> m >> n;
	cout << (l(k, m) * power(a, n, mod) * power(b, m, mod)) % mod;
	
}
2024/7/2 16:26
加载中...