快速幂求(a的b次方%n)
int s(int a,int b,int n)
{
if(b==1)
return a;
if(b%2==0)
{
int t=s(a,b/2,n);
return t*t%n;
}
else
{
int t=s(a,b/2,n);
t=t*t%n;
t=t*a%n;
return t;
}
}
非递归实现
int s(int a,int b,int n)
{
int sum=1;
while(b)
{
if(b%2==1)
sum=sum*a%n;
a=a*a%n;
b=b/2;
}
return sum;
}
#include<bits/stdc++.h>
using namespace std;
long long s(long long a,long long b,long long n)
{
long long sum=1;
while(b)
{
if(b%2==1)
sum=sum*a%n;
a=a*a%n;
b/=2;
}
return sum;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long a,b,c,k;
scanf("%lld%lld%lld%lld",&a,&b,&c,&k);
if(a+c==2*b)
{
printf("%lld\n",(a+(k-1)%200907*((b-a)%200907))%200907);
}
else
{
printf("%lld\n",a%200907*s((b/a)%200907,k-1,200907)%200907);
}
}
}