思路

题目的参数我分别用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;
}