当前位置: 代码迷 >> 综合 >> HDU-2817 A sequence of numbers(快速幂、等比数列、等差数列)
  详细解决方案

HDU-2817 A sequence of numbers(快速幂、等比数列、等差数列)

热度:75   发布时间:2024-01-30 07:56:06.0

problem

Xinlv很久以前就在纸上写了一些序列,它们可能是算术序列或几何序列。这些数字现在还不是很清楚,每个序列的前三个数字都是可识别的。Xinlv想知道这些顺序中的一些数字,他需要您的帮助。

Input

第一行包含一个整数N,表示存在N个序列。接下来的N行中的每行包含四个整数。前三个表示序列的前三个数字,最后一个是K,表示我们想知道序列的第K个数字。

您可以假设0 <K <= 10 ^ 9,其他三个数字在[0,2 ^ 63)范围内。序列的所有数字都是整数。并且序列是不递减的。

Output

每个测试用例输出一行,即,第K个数字模块(%)200907。

Sample Input

2
1 2 3 5
1 2 4 5

Sample Output

5
16

code

#include<iostream>
using namespace std;
const int mod=200907;
long long fastPow(long long a,long long n){//快速幂运算 long long res=1;long long base=a;while(n){if(n&1){res=(res*base)%mod;}base=(base*base)%mod;n=n>>1;}return res;
}
int main(){int t;cin>>t;//t表示组数 long long a,b,c,k; while(t--){cin>>a>>b>>c>>k;//输入四个数 if(b-a+b==c){//算术运算 等差数列 cout<<(a%mod+(k-1)%mod*(b-a)%mod)%mod<<endl;}else{//几何运算 等比数列long long m=b/a;cout<<(fastPow(m,k-1)*(a%mod))%mod<<endl; }}return 0;
}
  相关解决方案