#kSMybttg060101. 1615:【例 1】序列的第 k 个数
1615:【例 1】序列的第 k 个数
1615:【例 1】序列的第 k 个数
题目描述
BSNY 在学等差数列和等比数列,当已知前三项时,就可以知道是等差数列还是等比数列。现在给你序列的前三项,这个序列要么是等差序列,要么是等比序列,你能求出第 项的值吗?如果第 项的值太大,对 取模。
输入格式
第一行一个整数 ,表示有 组测试数据;
对于每组测试数据,输入前三项 ,然后输入 。
输出格式
对于每组数据输出第 项的值,对 取模。
样例
样例输入 #1
2
1 2 3 5
1 2 4 5
样例输出 #1
5
16
样例解释 #1
第一组数据:
- 前三项:,公差为 ,是等差数列。
- 第 项:,输出 。
第二组数据:
- 前三项:,公比为 ,是等比数列。
- 第 项:,输出 。
数据范围
对于全部数据:
时空限制
- 时间限制:1000 ms
- 内存限制:524288 KB
注意:本题需要判断序列是等差数列还是等比数列。判断方法:
- 如果 ,则为等差数列,公差 ,第 项为 。
- 否则为等比数列,公比 (注意 是整数,且保证 为整数?题目说序列要么等差要么等比,且 是整数,但公比可能是分数?实际上,等比数列的前三项为整数且公比可能是分数,但题目保证公比为整数?样例中公比是整数。但为了严谨,应该检查 是否成立,如果成立则为等比数列,公比 (需要整数除法)。
对于等比数列,第 项为 ,需要快速幂取模。注意取模数 不是质数,但 和 可能与模数不互质,但因为我们只做乘法和取模,直接计算即可。由于 可能很大,必须用快速幂。
注意:等差数列的项可能超过 long long 范围,需要在计算过程中取模。等差数列公式 可能很大,取模时注意负数。