题解:P12216 [蓝桥杯 2023 国 Java B] 互质
ArenaBreakout78 · · 题解
找了半天终于找到一道能交题解的水题了。
言归正传,我们直接看思路。
前置知识:
欧拉函数。
思路:
要解决这道题,我们需要使用到欧拉函数计算在区间
正题:
Step1 分解质因数:
首先,我们需要先将
Step2 求整数个数:
将
所以与
Step3 求区间互质:
于是在这个区间的
Step4 求最终答案:
最后用快速幂求出
AC CODE:
#include <bits/stdc++.h>
using namespace std;
const int MOD=1e9+7;
long long ksm(long long a,long long b,long long mod){
long long ans=1;
a%=mod;
while(b>0){
if(b%2==1) ans=(ans*a)%mod;
a=(a*a)%mod;
b/=2;
}
return ans;
}
int main(){
long long p1=2023*(7-1)/7*(17-1)/17;
long long p2=ksm(2023,2022,MOD);
cout<<(p1*p2)%MOD;
return 0;
}