这个就是简单的高中数学知识,但需要用一点算法才能快速的算出a^b的值
#include <bits/stdc++.h> // c++ 万能头文件
using namespace std; // c++ 格式
typedef long long ll ;
const int N = 200907; // 用N代替 200907
ll qpow(ll a, ll b) { //快速幂模板可以看一下我发的那个博客或自己去找相关模板
ll res = 1;
while (b) {
if (b & 1) {
res = (res * a) % N;
}
a = (a * a) % N;
b /= 2;
}
return res;
}
int main() {
ll t;
cin >> t;
while (t--) { // 多组输入格式
ll a, b, c, k;//定义变量
cin >> a >> b >> c >> k; //输入样例
ll fg = 0; // 标记变量
if (b - a == c - b) //判断是否为等差数列
fg = 1; // 是等差数列
if (fg == 1) { // 是等差数列 那么进行接下来if的操作
ll d = b - a; // 等差
ll sum = 0;
sum = (a + (k - 1) * d) % N; // 等差通项公式
cout << sum << endl;
} else { //是等比数列 进行等比数列的操作
ll q = b / a; // 公比
cout << (a * qpow(q, k - 1)) % N << endl; // 等比数列的通项公式 但需要调用那个自己写的pow函数(快速幂)
}
}
return 0;
}
友情贴一下其他博主写的好的博客链接,关于这个快速幂算法的
添加链接描述