链接:https://ac.nowcoder.com/acm/contest/85/C
来源:牛客网
题目描述
毕竟是元宵节,晚上还是要吃几个元宵。 Etéreo 家可是个大家庭,元宵的数量,甚至是餐具的数量,都多的惊人。现在,爱数学的 Etéreo 又来问你有趣的数学题了,快来秒掉它! Etéreo 家里有 \varsigmaς 种元宵馅, \varthetaϑ 种元宵皮,每个元宵可以选择任意一种元宵馅和任意一种元宵皮。同时有 \varpiϖ 张桌子,每张桌子上放了 \varrhoϱ 只碗,每只碗能放一只元宵。每只碗都要装一只元宵。Etéreo 会告诉你 \varsigma, \vartheta, \varpi, \varrhoς,ϑ,ϖ,ϱ 的值,想请问你有多少种装元宵的方式。答案对 \LambdaΛ 取模。
两种方式被认为是不同的当且仅当至少有一只碗存在于两种方式的同一个位置但是里面有至少一个元宵不同。
两个元宵被认为是不同的当且仅当元宵馅不同或者元宵皮不同。
碗和桌子都是有编号的,但是你不能改变碗或桌子的编号。
你可以认为碗和桌子都是固定的,你只能改变元宵的种类和位置。
输入描述:
输入共一行,五个整数 \varsigma, \vartheta, \varpi, \varrho, \Lambdaς,ϑ,ϖ,ϱ,Λ ,意义同题目描述。
输出描述:
每行一个整数,表示答案。
示例1
输入
复制
1 2 1 3 998244353
输出
复制
8
备注:
0 \leq \varsigma, \vartheta \leq 10^{18}0≤ς,ϑ≤10
18
0 \leq \varpi, \varrho \leq 10^60≤ϖ,ϱ≤10
6
1 \leq \Lambda \leq 1,000,000,0071≤Λ≤1,000,000,007
每个座位有那么多种选择
如果有一个没有那就是0种方案,特判
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define int long long
using namespace std;
int qmi(int a, int b, int mod){
int res = 1 % mod;
while(b){
if (b & 1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
signed main(){
//ios::sync_with_stdio(false);
int a, b, c, d, mod;
cin >> a >> b >> c >> d >> mod;
a %= mod;
b %= mod;
int ans1 = a * b % mod;
int ans2 = c * d;
// cout << ans1 << "-------" << ans2 << endl;
if (ans1 == 0 || ans2 == 0) cout << "0" << endl;
else{
cout << qmi(ans1, ans2, mod) % mod << endl;
}
return 0;
}