一共T组测试数据,给出一个数列的前三项a,b,c。判断是等差数列还是等比数列,求该数列的第k项。
#include
#include
#include
using namespace std;
const int mod = 200907;
typedef long long ll;
//快速幂
int qmi(int a, int b)
{
int res = 1;
while(b)
{
if(b & 1) res = (ll) res * a % mod;
a = (ll)a * a % mod;
b >>= 1;
}
return res;
}
int main()
{
int T;
cin >> T;
while(T --)
{
int a, b, c, k;
scanf("%d%d%d%d", &a, &b, &c, &k);
//判断是否是等差数列
if(a + c == 2 * b) cout << (a + (ll)(k - 1) * (b - a)) % mod << endl;
else
{
cout << (ll)a * qmi((b / a), k - 1) % mod << endl;
}
}
return 0;
}
给出数列前三项a,b,c。