比赛 EYOI与SBOI开学欢乐赛12th 评测结果 AAAAAAAAAA
题目名称 最大公因数取模 最终得分 100
用户昵称 qyd 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-10-17 22:06:20
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define ll long long
const int mod=1e9+7; 
ll qm(ll a,ll n,ll m); //取模m的a^n 
ll gcd(ll m,ll n);    //gcd(m,n)
int main()
{
	freopen("gcmod.in","r",stdin);
	freopen("gcmod.out","w",stdout);
	
	int T;
	cin>>T;
	
	ll A,B,N,d;
	while(T>0&&scanf("%lld%lld%lld",&A,&B,&N))
	{
		T--;

		d=abs(A-B);
		
		if(d==0)
		  cout<<(qm(A,N,mod)+qm(B,N,mod))%mod;
		else
		{
			A%=d;
			B%=d;
			
			cout<<gcd(((qm(A,N,d))+qm(B,N,d)),d)%mod;
		}  
    }
	return 0;	  
}
ll qm(ll a,ll n,ll m)
{
	if(n==1)
	  return a;
	else
	{
		a%=m;
		ll base=qm(a,n/2,m)%m;
		ll temp=(base*base)%m;
		return ((n%2==0?1:a)*temp)%m;
	}	
}
ll gcd(ll m,ll n)
{
	return n==0?m:gcd(n,m%n);
}