快速幂

来源:互联网 发布:淘宝网处罚考试50题 编辑:程序博客网 时间:2024/06/05 08:53

1691: CZY追女孩

时间限制: 1 Sec  内存限制: 128 MB
提交: 99  解决: 17
[提交][状态][讨论版]

题目描述

CZY遇到了一个萌妹子,他使出浑身解数想要博得她的好感,但是妹子居然是个数学学霸!一天,那个女孩在解数列问题时遇到了一点麻烦,她有数列的前3项,数列不是等比数列就是等差数列,她很想知道这个数列的第n项是什么,但是n可能很大,她算不出来,CZY很想帮她,可是CZY是个学渣,于是想请聪明的你来帮忙求出数列的第n项,由于数据可能太大了,最后的结果对200907取余就好

输入

输入包含多组测试数据,每组测试数据包含4个整数,前三个整数是数列的前三项,最后一个数是n,四个数的范围都是1~10^9

输出

输出这个数列的第n项%200907

样例输入

1 2 3 51 2 4 5

样例输出

516
被这道题坑的要死,提交了20余次,竟然显示格式错误,结果就因为oj不支持——int64和%I64d,以下是代码。
#include<stdio.h> long  long a,b,c,d,n,e,t,i,q;int main(){ while(scanf("%lld%lld%lld%lld",&a,&b,&c,&e)!=EOF) {  if(b-a==c-b)  {   n=a+(b-a)*(e-1);   t=n%200907;  }  else  {   q=(b/a)%200907;   t=a%200907;   e=e-1;   while(e>0)   {    if(e%2==1)    t=(t*q)%200907;    e=e/2;    q=(q*q)%200907;       }     }  printf("%lld\n",t);   } return 0;}
0 0