您的位置:首页 > 其它

hdu 2817 快速幂入门

2016-07-17 21:38 211 查看
点击打开链接

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;
const int M = 10010;
const int Mod=200907;
typedef long long LL;
LL pow(LL x,LL n)  //二分快速幂
{
if(n==0)
return 1;
if(n%2)  // a^n  %c = a^n-1*a %c
{
return pow(x,n-1)*x%Mod;
}
else // a^n  %c = (a^n/2 * a^n/2) %c
{
LL a=pow(x,n/2);
return a*a%Mod;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
LL a,b,c,k;
cin>>a>>b>>c>>k;
if(b-a==c-b)
{
LL d=c-b;
LL ans;
ans=(a%Mod+((k-1)*d)%Mod)%Mod;
cout<<ans<<endl;

}
else
{
LL q=b/a;
LL ans=c;

// (a*b)  (a%c * b%c) 同余c
cout<<(c%Mod*pow(q,k-3)%Mod)%Mod<<endl;//快速幂取模

}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: