contest/85/C

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

LL quick_pow(LL a,LL b,LL m){
    LL ans = 1;
    if(b==0)
        return 0;
    a=a%m;
    while(b>0){
        if(b&1){
            ans=(ans*a)%m;
        }
        a=(a*a)%m;
        b>>=1;
    }
    return ans;
}
int main(){
    LL a,b,c,d, m;
    LL ans,res;
    cin>>a>>b>>c>>d>>m;
    ans=(a%m)*(b%m)%m;
    res=c*d;
    cout<<quick_pow(ans,res,m);
    return 0;
}

取余原理:(a * b) % p = (a % p * b % p) % p
快速幂原理:根据幂的二进制将运算拆分为多个运算,运算次数即为幂的位数。
结合现实,当桌子和碗的乘积为0时,结果应为0,而不是1。