比赛 EYOI与SBOI开学欢乐赛12th 评测结果 AWWWAWWWWW
题目名称 最大公因数取模 最终得分 20
用户昵称 HeSn 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-10-17 22:02:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
int a, b, c;
int power(int x, int w) {
	if(x == 1) {
		return w;
	}
	if(x == 0) {
		return 1;
	}
	int p = power(x / 2, w);
	if(x % 2 == 0) {
		return (p * p) % mod;
	}
	return ((p * p) % mod * w) % mod;
}
signed main() {
	freopen("gcmod.in", "r", stdin);
	freopen("gcmod.out", "w", stdout);
	int t;
	cin >> t;
	for(int tt = 1; tt <= t; tt ++) {
		cin >> a >> b >> c;
		int x = abs(a - b);
		if(x == 1) {
			cout << x << endl;
			continue;
		}
		if(a == b) {
			a = power(c, a);
			b = power(c, b);
			cout << (a + b) % mod << endl;
			continue;
		}
		if(a > 10 && b > 10 && c > 10) {
			cout << __gcd(a - b, a + b) << endl;
			continue;
		} 
		a = power(c, a);
		b = power(c, b);
		cout << __gcd(a + b, x) % mod << endl;
	}
	return 0;
}