#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;
const int M = 10010;
const int Mod=200907;
typedef long long LL;
LL pow(LL x,LL n) //二分快速幂
{
if(n==0)
return 1;
if(n%2) // a^n %c = a^n-1*a %c
{
return pow(x,n-1)*x%Mod;
}
else // a^n %c = (a^n/2 * a^n/2) %c
{
LL a=pow(x,n/2);
return a*a%Mod;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
LL a,b,c,k;
cin>>a>>b>>c>>k;
if(b-a==c-b)
{
LL d=c-b;
LL ans;
ans=(a%Mod+((k-1)*d)%Mod)%Mod;
cout<<ans<<endl;
}
else
{
LL q=b/a;
LL ans=c;
// (a*b) (a%c * b%c) 同余c
cout<<(c%Mod*pow(q,k-3)%Mod)%Mod<<endl;//快速幂取模
}
}
return 0;
}
hdu 2817 快速幂入门
最新推荐文章于 2020-01-30 18:19:56 发布