思路
题目的参数我分别用c,v,w,q,mod代替了。想法很简单,每个碗的放法都有cv种,碗有wq个,所以是两者的全排列。
这道题的主要的坑点是数据范围,如果你直接求(cv)^(wq)显然是不行的,因为c和v都有1e18大,所以要把式子分解。
,w*q没有爆ll,所以用中间的式就好啦~。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll c,v,w,q,mod,ans;
ll fpow(ll p,ll t){
p%=mod;
ll res=1;
while(t){
if(t&1) res=res*p%mod;
p=p*p%mod;
t>>=1;
}
return res%mod;
}
int main(){
cin>>c>>v>>w>>q>>mod;
w*=q;
ans=fpow(c,w)*fpow(v,w)%mod;
cout<<ans;
return 0;
} 
京公网安备 11010502036488号