给出整数a,b,m,n,p,且a和b互质,a>b,求am-bm和an-bn的最大公约数模p的结果。
输入格式:
输入在一行中包含5个32位无符号整数a,b,m,n和p,且p>1。
输出格式:
输出在一行中给出计算结果。
输入样例1:
8 7 5 4 100
输出样例1:
1
输入样例2:
11 5 6 3 20
输出样例2:
6
思路
k=gcd(m,n)
gcd(am-bm,an-bn)=ak-bk
原理链接
重点后四行
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll a,b,m,n,p;
cin>>a>>b>>m>>n>>p;
int k=__gcd(m,n);
//k=gcd(m,n)
//gcd(a^m^-b^m^,a^n^-b^n^)=a^k^-b^k
cout<<((ll)pow(a,k)-(ll)pow(b,k))%p<<endl;
return 0;
}