【计蒜客】吃辣椒 基础数论

题目链接蒜头君的多项式


题目描述

在这里插入图片描述


思路

题意很好理解,用二项式定理处理出组合数,带入计算即可;
注意不要溢出;

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

#include <bits/stdc++.h>
using namespace std;

#define long long long
#define MAX 1010
#define MOD 10007

long C[MAX][MAX];

void init(int n)
{
C[0][0] = 1;
for(int i = 1; i<=n; i++)
{
C[i][0] = C[i][i] = 1;
for(int j = 1; j < i; j++)
{
C[i][j] = (C[i-1][j-1] + C[i-1][j]) % MOD;
}
}
}

long pow_mod(int n, int m)
{
long tmp = 1;
while(m)
{
if(m & 1)
tmp = ((tmp % MOD) * (n % MOD) ) % MOD;
n = ((n%MOD) * (n%MOD) ) % MOD;
m >>= 1;
}
return tmp;
}

int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int p, q, k, a, b;
cin >> p >> q >> k >> a >> b;
init(k);
cout << pow_mod(p, a) % MOD * pow_mod(q, b) % MOD * C[k][b] % MOD;
return 0;
}
-------------本文结束,感谢您的阅读!-------------