欧拉函数 牛客寒假1 小a与黄金街道

时间:2023-12-05 09:06:02

题目链接

分析:这题用到了欧拉函数,

欧拉函数,用φ(n)表示

欧拉函数是求小于等于n的数中与n互质的数的数目

详细可以看看这篇博文https://www.cnblogs.com/linyujun/p/5194170.html

注意:这种指数形式取模的话不能在指数上直接取模,但可以给底数取模

欧拉函数 牛客寒假1 小a与黄金街道

 #include <bits/stdc++.h>
using namespace std;
const int inf=<<;
typedef long long ll;
const double pi=acos(-);
const int mod=1e9+;
const int maxn=;
ll phi(ll x){
ll ans = x;
for(int i = ; i*i <= x; i++){
if(x % i == ){
ans = ans / i * (i-);
while(x % i == ) x /= i;
}
}
if(x > ) ans = ans / x * (x-);
return ans;
}
ll pow_mod(ll a, ll b){
ll ret = ;
while(b){
if(b & ) ret = (ret * a) % mod;
a = (a * a) % mod;
b >>= ;
}
return ret;
}
int main(){
ll n,k,a,b;scanf("%lld%lld%lld%lld",&n,&k,&a,&b);
cout<<((a+b)%mod)*(pow_mod(k%mod,n*phi(n)/)%mod)%mod<<endl;
return ;
}