水题,题目要求的就是等比数列或是等差数列的第k项
等差数列就直接套通项公式嘛
等比数列的话由于k可能非常大,所以要用快速幂
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
#define MOD 200907
int solve(int fac,int num){
if(fac==0)
return 1;
long long x=solve(fac/2,num);
long long ans=x*x%MOD;
if(fac%2!=0)
ans=ans*num%MOD;
return (int)ans;
}
int main(){
int N;
scanf("%d",&N);
while(N--){
long long a,b,c,k;
scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k);
long long d1=b-a,d2=c-b;
if(d1==d2){
long long ans=((a%MOD)+(((d1%MOD)*((k-1)%MOD)%MOD)%MOD))%MOD;
cout<<ans<<endl;
}
else{
long long ans=(a%MOD)*(solve(k-1,b/a)%MOD)%MOD;
cout<<ans<<endl;
}
}
return 0;
}