题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817
题目大意:给出三个数,来判断是等差还是等比数列,再输入一个n,来计算第n个数的值。
#include <iostream>
#include <cstdio>
#include <cmath>
#define m 200907 using namespace std; __int64 fun(__int64 j,__int64 k)
{
__int64 s=;
while (k)
{
if (k%==)
s=s*j%m;
j=(j*j)%m;
k/=;
}
return s;
}
int main ()
{
__int64 t,a,b,c,n,s;
cin>>t;
while (t--)
{
cin>>a>>b>>c>>n;
if (b-a==c-b)
{
int d=b-a;
s=(a+(n-)*d)%m;
}
else
{
int q=b/a;
s=(a*fun(q,n-))%m;
}
printf ("%I64d\n",s);
}
return ;
}