AtCoder Beginner Contest 228 E - Integer Sequence Fair

题目:Atcoder E - Integer Sequence Fair

E - Integer Sequence Fair (atcoder.jp)

题意:

反正其实就是求m的(k的n次方)

思路:

求m的(k的n次方)的次方,mod为998244353;

1.如果m是mod倍数直接输出0,

2.M^(P-1)%P=1%P;

所以可以设a,为(kn)/(P-1),b为(kn)%(P-1),原式子就转为M(a*(P-1)+b)=M(P-1)a*Mb,

转为(1a)*Mb

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
int qmi(int m, int k, int p)
{
    int res = 1 % p, t = m%p;
    while (k)
    {
        if (k&1) res = res * t % p;
        t = t * t % p;
        k >>= 1;
    }
    return res%p;
}
signed main(){
	int n,m,k;
	cin>>n>>k>>m;
	if(m%mod==0) cout<<"0"<<endl;
	else{
		int ans=qmi(m,qmi(k,n,mod-1),mod);
		cout<<ans<<endl;
	}
    return 0;
}

posted @ 2021-11-20 22:05  Curry_BP  阅读(99)  评论(0)    收藏  举报