首页 > 代码库 > hdu 2817 A sequence of numbers(快速幂取余)
hdu 2817 A sequence of numbers(快速幂取余)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817
题目大意:给出三个数,来判断是等差还是等比数列,再输入一个n,来计算第n个数的值。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #define m 200907 5 6 using namespace std; 7 8 __int64 fun(__int64 j,__int64 k) 9 {10 __int64 s=1;11 while (k)12 {13 if (k%2==1)14 s=s*j%m;15 j=(j*j)%m;16 k/=2;17 }18 return s;19 }20 int main ()21 {22 __int64 t,a,b,c,n,s;23 cin>>t;24 while (t--)25 {26 cin>>a>>b>>c>>n;27 if (b-a==c-b)28 {29 int d=b-a;30 s=(a+(n-1)*d)%m;31 }32 else33 {34 int q=b/a;35 s=(a*fun(q,n-1))%m;36 }37 printf ("%I64d\n",s);38 }39 return 0;40 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。