您的位置:首页 > 产品设计 > UI/UE

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

2015-10-12 14:19 447 查看
题目链接: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=1;
while (k)
{
if (k%2==1)
s=s*j%m;
j=(j*j)%m;
k/=2;
}
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-1)*d)%m;
}
else
{
int q=b/a;
s=(a*fun(q,n-1))%m;
}
printf ("%I64d\n",s);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: