当前位置: 首页 > news >正文

信息学奥赛一本通 1615:【例 1】序列的第 k 个数

【题目链接】

ybt 1615:【例 1】序列的第 k 个数
本题的a 、 b 、 c a、b、cabc,等差数列公差、等比数列的公比都为整数。

【题目考点】

1. 快速幂

相关知识见:洛谷 P1226 【模板】快速幂

2. 等差数列

相邻两项的差相等的数列为等差数列。
设第i ii项为a i a_iai,公差为d dd
等差数列的递推公式:a i = a i − 1 + d a_i = a_{i-1}+dai=ai1+d
等差数列的通项公式:a i = a 1 + ( i − 1 ) d a_i = a_1+(i-1)dai=a1+(i1)d

3. 等比数列

相邻两项的比值相等的数列为等比数列。
设第i ii项为a i a_iai,公比为q qq
等比数列的递推公式:a i = a i − 1 q a_i = a_{i-1}qai=ai1q
等比数列的通项公式:a i = a 1 q i − 1 a_i = a_1q^{i-1}ai=a1qi1

【解题思路】

M = 200907 M=200907M=200907
每组数据,输入了数列的前三项
先判断第二项减第一项的值,与第三项减第二项的值是否相等,即是否有b − a = c − b b-a=c-bba=cb
如果满足该情况,则该数列相邻两项的差相等,是等差数列。否则就是等比数列。

  • 如果该数列是等差数列,则公差为b − a b-aba,使用通项公式求等差数列第k kk项,再对M MM取模:a k m o d M = ( a 1 + ( k − 1 ) d ) m o d M = ( a + ( k − 1 ) ( b − a ) ) m o d M a_k\bmod M=(a_1+(k-1)d)\bmod M=(a+(k-1)(b-a))\bmod MakmodM=(a1+(k1)d)modM=(a+(k1)(ba))modM
  • 如果该数列是等比数列,则公比为b a \frac{b}{a}ab,使用通项公式求等比数列第k kk项,再对M MM取模:a k m o d M = a 1 q k − 1 m o d M = a ( b a ) k − 1 m o d M = ( a m o d M ) ( ( b a ) k − 1 m o d M ) m o d M a_k\bmod M=a_1q^{k-1}\bmod M=a(\frac{b}{a})^{k-1}\bmod M=(a\bmod M)((\frac{b}{a})^{k-1}\bmod M)\bmod MakmodM=a1qk1modM=a(ab)k1modM=(amodM)((ab)k1modM)modM

( b a ) k − 1 m o d M (\frac{b}{a})^{k-1}\bmod M(ab)k1modM需要用到快速幂取模算法。

本题无法使用递推公式求等差或等比数列第k kk项,因为k kk最大会达到1 0 9 10^9109,而递推求等差或等比数列第k kk项的时间复杂度是O ( n ) O(n)O(n)的,写代码运行会超时)

【题解代码】

解法1:快速幂
#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintM=200907;LLfastPow(LL a,LL b,LL m){LL r=1;while(b>0){if(b%2==1)r=r*a%m;a=a*a%m;b/=2;}returnr;}intmain(){LL t,a,b,c,k;cin>>t;while(t--){cin>>a>>b>>c>>k;if(c-b==b-a)cout<<(a+(k-1)*(b-a))%M<<endl;else//c/b == b/acout<<a*fastPow(b/a,k-1,M)%M<<endl;}return0;}
http://www.jsqmd.com/news/120839/

相关文章:

  • 基于Excalidraw镜像搭建企业级内部协作平台全攻略
  • Excalidraw构建ERP模块关系:企业资源计划视图
  • 如何在Excalidraw中绘制专业的云架构拓扑图?
  • Excalidraw构建SCM协同平台:供应商管理可视化
  • 63、命令提示符使用指南
  • Excalidraw呈现EHS安全体系:环境健康安全管理
  • 算法---LeetCode 111. 二叉树的最小深度
  • Excalidraw绘制生产排程表:制造业APS系统原型
  • Excalidraw构建RFM模型:客户价值分层可视化
  • Excalidraw构建服务蓝图:前台后台交互可视化
  • 面向所有人的Python编程——循环迭代
  • Excalidraw开源优势解析:自由部署、数据私有化保障
  • 从想法到图表仅需一句话:Excalidraw集成AI绘图功能
  • Unity引擎使用问题记录
  • Excalidraw表达AB测试流程:实验设计示意图
  • Excalidraw呈现康复治疗计划:个性化护理流程
  • Creed —— AI攻击伤害
  • Excalidraw构建远程诊疗流程:互联网医院模式图
  • 业务域名验证文件添加操作手册
  • Win11 + NVIDIA驱动 + CUDA + cuDNN + Anaconda + TensorFlow-GPU + PyTorch GPU环境搭建详细指南 ~ 2026最新版
  • 库存与已售数量数据库操作
  • Excalidraw构建可持续发展战略:ESG目标分解
  • Excalidraw绘制产品创新流程:从想法到上市
  • 用Excalidraw开源白板,一键生成技术架构图与流程图
  • Excalidraw绘制企业文化传播:价值观落地路径
  • JAVA 21 Spring Boot 4 学习--迁移指南 Migration Guide
  • Windows 11 安装 TensorFlow 2.x 完整指南
  • Excalidraw绘制招聘流程图:候选人体验优化
  • Excalidraw构建培训课程体系:学习路径设计
  • Windows11安装PyTorch 2.x完整指南