AcWing 1289. 序列的第k个数

BSNY 在学等差数列和等比数列,当已知前三项时,就可以知道是等差数列还是等比数列。

现在给你 整数 序列的前三项,这个序列要么是等差序列,要么是等比序列,你能求出第k项的值吗。

如果第k项的值太大,对其取模200709

 

#include<bits/stdc++.h>
#define MOD 200907
using namespace std;
long long a,b,c,n;
int qmi(long long x,long long y)
{
    long long w=1;
    while(y)
    {
        if(y&1)w=w*x%MOD;
        y/=2;
        x=x*x%MOD;
    }
    return w%MOD;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        scanf("%lld %lld %lld %lld",&a,&b,&c,&n);
        if(b-a==c-b)cout<<a+(b-a)*(n-1)%MOD<<endl;
        else cout<<a*qmi(b/a,n-1)%MOD<<endl;
    }
    return 0;
}

 

posted @ 2021-01-29 16:50  君与  阅读(59)  评论(0编辑  收藏  举报