碎碎念
题目原文请移步下面的链接
OI
、 NOIP
、数学
普及/提高-
=
=
mod
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
const int mod = 10007;
void best_coder() {
int a, b, k, n, m;
cin >> a >> b >> k >> n >> m;
int t = min(n, m);
long long ans = 1;
for (int i = 0; i < t; ++i) {
ans *= k - i;
ans /= i + 1;
ans %= mod;
}
for (int i = 0; i < n; ++i) {
ans *= a;
ans %= mod;
}
for (int i = 0; i < m; ++i) {
ans *= b;
ans %= mod;
}
cout << ans;
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
const int mod = 10007;
int c[1000][1000];
int number (int k, int t) {
if (t == 0 || k == t) {
c[k][t] = 1;
return c[k][t];
}
if (t == 1) {
c[k][t] = k;
return c[k][t];
}
c[k][t] = number(k - 1, t) % mod + number(k - 1, t - 1) % mod;
return c[k][t];
}
void best_coder() {
int a, b, k, n, m;
cin >> a >> b >> k >> n >> m;
int t = min(n, m);
long long ans;
ans = number(k, t);
for (int i = 0; i < n; ++i) {
ans *= a;
ans %= mod;
}
for (int i = 0; i < m; ++i) {
ans *= b;
ans %= mod;
}
cout << ans;
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
较上一版代码更正了错误,这里有个点需要注意,a和b的初始值可能大于mod所以要先取余(不过有没有影响本人也没测试过,反正取余了铁定没问题就是了)
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
const int mod = 10007;
int c[1010][1010];
int quick_pow(int x, int y) {
int ans = 1, t = x;
while (y) {
t %= mod;
if (y % 2 == 1) {
ans *= t % mod;
ans %= mod;
}
t = (t * t) % mod;
y >>= 1;
}
return ans % mod;
}
int number(int k, int t) {
if (t == 0 || k == t) {
c[k][t] = 1;
return c[k][t];
}
if (t == 1) {
c[k][t] = k;
return c[k][t];
}
if (c[k][t] != 0) {
return c[k][t];
}
c[k][t] = (number(k - 1, t) + number(k - 1, t - 1)) % mod;
return c[k][t];
}
void best_coder() {
int a, b, k, n, m;
cin >> a >> b >> k >> n >> m;
int t = min(n, m);
long long ans = 1;
c[1][0] = 1;
c[1][1] = 1;
a %= mod;
b %= mod;
ans *= quick_pow(a, n) % mod;
ans *= quick_pow(b, m) % mod;
ans *= number(k, t);
cout << ans % mod;
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
const int mod = 10007;
int c[1010][1010];
void happy_coder() {
long long a, b, k, n, m;
cin >> a >> b >> k >> n >> m;
c[1][1] = 1;
for (int i = 2; i <= k + 1; i++) {
for (int j = 1; j <= i; j++) {
c[i][j] = (c[i - 1][j - 1] * b + c[i - 1][j] * a) % 10007;
}
}
cout << c[k + 1][m + 1];
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
//best_coder();
// 最优解
happy_coder();
// 返回
return 0;
}
END