博客
关于我
快速幂 - 序列的第k个数 - AcWing 1289
阅读量:351 次
发布时间:2019-03-04

本文共 1560 字,大约阅读时间需要 5 分钟。

快速幂 - 序列的第k个数 - AcWing 1289

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

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

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

输入格式

第一行一个整数 T,表示有 T 组测试数据;

对于每组测试数据,输入前三项 a,b,c,然后输入 k。

输出格式

对于每组数据,输出第 k 项取模 200907 的值。

数据范围

1 ≤ T ≤ 100 , 1 ≤ a ≤ b ≤ c ≤ 1 0 9 , 1 ≤ k ≤ 1 0 9 1≤T≤100, 1≤a≤b≤c≤10^9, 1≤k≤10^9 1T100,1abc109,1k109

输入样例:

21 2 3 51 2 4 5

输出样例:

516

分析:

设 给 定 前 三 项 为 a , b , c 。 设给定前三项为a,b,c。 a,b,c

等 差 数 列 : a + b = 2 c , 通 项 公 式 : a k = a 1 + ( k − 1 ) d 等差数列:a+b=2c,通项公式:a_k=a_1+(k-1)d a+b=2c:ak=a1+(k1)d

等 比 数 列 : a × c = b 2 , 通 项 公 式 : a k = a 1 q k − 1 等比数列:a×c=b^2,通项公式:a_k=a_1q^{k-1} a×c=b2:ak=a1qk1

问题:

是 否 存 在 某 三 个 数 , 使 得 我 们 无 法 确 定 是 等 差 数 列 还 是 等 比 数 列 , 以 至 于 无 法 计 算 第 k 项 。 是否存在某三个数,使得我们无法确定是等差数列还是等比数列,以至于无法计算第k项。 使k

将 a = 2 c − b 带 入 a × b = b 2 将a=2c-b带入a×b=b^2 a=2cba×b=b2

得 ( b − c ) 2 = 0 , 即 b = c , 同 理 得 到 a = b = c , 也 就 是 公 差 为 0 的 等 差 数 列 或 公 比 为 1 的 等 比 数 列 。 得(b-c)^2=0,即b=c,同理得到a=b=c,也就是公差为0的等差数列或公比为1的等比数列。 (bc)2=0b=ca=b=c01

此 时 我 们 当 作 等 差 数 列 来 处 理 , 求 第 k 项 即 可 。 此时我们当作等差数列来处理,求第k项即可。 k

代码:

#include
#define ll long long using namespace std;const int mod=200907;ll quick_pow(ll a,ll b,int mod){ ll res=1; while(b) { if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res;}int main(){ int T; ll a,b,c,k; cin>>T; while(T--) { cin>>a>>b>>c>>k; if(a+c==2*b) cout<<(a+(b-a)*(k-1))%mod<

转载地址:http://woor.baihongyu.com/

你可能感兴趣的文章
浅析物联网无线(Bluetooth/Wi-Fi/Zigbee/Z-Wave/Cellular)通信协议
查看>>
【DFS】【暴力】KC看星(star)
查看>>
【最短路】【枚举】最短路(path)
查看>>
【DP】糖果盒
查看>>
【数论】小X的密码破译
查看>>
【贪心?】小X的AK计划
查看>>
【模拟】优美三角剖分
查看>>
2019暑假·纪中记Day1-Day3
查看>>
【普及模拟】交换
查看>>
c语言扫雷游戏,可以递归展开非雷位置,第一次不踩雷
查看>>
C++STL容器----List
查看>>
4*4矩阵键盘的FPGA驱动
查看>>
SPI主机的Verilog代码及验证(优化版)
查看>>
椭圆曲线密码系统——椭圆曲线
查看>>
七 socket编程
查看>>
Vue实现选项卡功能
查看>>
清除默认样式
查看>>
Android Dialog 普通对话框 单选对话框 多选对话框
查看>>
Android 联合ViewPager 与 Fragment
查看>>
2.4 大电路静态工作点的稳定
查看>>