1 条题解
-
0Guest LV 0
-
0
#include<bits/stdc++.h>
using namespace std;
int T;
long long mod=200907;//一定要用 long long 否则只有60分 我也不知道为啥
long long Quick_Pow(long long x,long long y)
{//快速幂模板
long long ans=1;
while(y)
{//虽然用老师教的的递归也可以 但是用位运算的话 当数据大的时候时间更快 不过难理解
if(y&1) ans=(ans*x)%mod;
x=(x*x)%mod;
y>>=1;
}
return ans;
}
int main()
{
cin>>T;
for(int i=1;i<=T;i++)
{
//等差数列就是指每一个数都等于上一个数再加上一个d(d是一个固定的常数)
//等比数列就是指每一个数都等于上一个数再乘上一个q(q是一个固定的常数)
//数列这一块高二的数学 必修五会教 不过当你们看到这篇题解的时候 不知你们教材改了没
int a,b,c,k;
cin>>a>>b>>c>>k;
if(b-a==c-b)
{//等差数列
int d,res;
d=(b-a)%mod;
res=(a+((k-1)%mod)*d)%mod;
cout<<res<<endl;
}
else
{//等比数列
int q,res;
q=(b/a)%mod;
res=((a%mod)*(Quick_Pow(q,k-1)%mod))%mod;
//尽量每算出一块数据的时候就把它给模一下 避免在计算过程中出现数据大于你开的范围
cout<<res<<endl;
}
}
return 0;
}
//来自某届石光中学信竞苟蒻学长 愿看到此文的你 努力码题 为校争光
- 1