hdu 2817 A sequence of numbers(快速幂取余)

题目链接: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 ;
}
上一篇:Ubuntu下命令行访问网站


下一篇:HDU - 1005 Number Sequence (矩阵快速幂)