给定两正整数 $a, b$ 。给定序列 $s_0, s_1, \dots, s_n,s_i$ 等于 $1$ 或 $-1$,并且已知 $s$ 是周期为 $k$ 的序列并且 $k\mid (n+1)$,输入只给出序列 $s$ 的前 $k$ 项。

Find out the non-negative remainder of division of $\sum\limits_{i=0}^n s_i a^{n-i}b^i$ by $10^9+9$.

数据范围

$ 1\le n, a, b \le 10^9$
$ 1\le k \le 10^5$

分析

注意到 $10^9 + 9$ 是一个素数,令 $p = 10^9 + 9$ 。
问题可化为等比数列求和。公比为 $q = \left(\dfrac{b}{a}\right)^k$ 。要特别注意 $q = 1 \pmod{p}$ 时等比数列的求和公式不再适用。

比赛时,我第一发提交没有注意到这个点。后来想到这个点,但只想到了 $a = b \pmod{p}$ 的情况。其实这并不是使 $q = 1$ 的唯一情况,至少还有一种情况「$a = - b \pmod {p}$ 且 $k$ 为偶数」也使得 $q = 1$ 。比赛时我没想到这种情况,到快结束时,把用公式求和换成折半求和才通过的。


$1-(\frac{b}{a})^k $ 在模 $p$ 逆元不存在 $\iff$ $1-(\frac{b}{a})^k = 0 \pmod{p}$ $\iff$ $(\frac{b}{a})^k = 1 \pmod{p}$


这一段论证真是太蠢了,被自己给蠢哭了
下面仔细分析一下这个问题
令 $S = \sum\limits_{i=0}^{k-1} s_i a^{n-i}b^i$ 。考虑 $q \ne 1\pmod{p}$ 的情形。
求和公式为
\[
\frac{S(1-(\frac{b}{a})^{n+1})} {1-(\frac{b}{a})^k}
\]

分母 $1-(\frac{b}{a})^k$ 在模 $p$ 下的逆元一定存在吗?

答案是肯定的。假设分母在模 $p$ 下的逆元不存在,即 $p\mid (a^k - b^k)(a^k)^{-1}\iff p\mid (a^k - b^k)$


总结

当意识等比数列求和公式有不适用的情况时,应当进一步问自己,「等比数列求和公式不适用的充要条件是什么?」然后就自然会想到「直接去判断 $\left(\dfrac{b}{a}\right)^k \bmod p$ 是否等于 $1$」 。

转载于:https://www.cnblogs.com/Patt/p/8900921.html

CF 964C Alternating Sum相关推荐

  1. CF963A Alternating Sum

    Alternating Sum 题目传送门 思路:这道题呀,需要涉及到两个数学知识,一是逆元,二是等比数列求和公式. 一:逆元 我们知道 mod 这个东西在题目中时常出现,他可以用于加法,减法,乘法, ...

  2. Codeforces 963A Alternating Sum 【数论+数学】

    官方题解这个样子我觉得说得比较清楚.Z我们可以朴素的预处理出来(注意乘法膜),q的话考点在于[分数取膜]即 (a/b)%P = a* inverse of b %P 这就涉及到算b的逆元,我用的是欧几 ...

  3. Tinkoff Internship Warmup Round 2018 and Codeforces Round #475 (Div. 2) C.Alternating Sum(等比数列求和)

    题目链接;点击打开链接 题目大意:给出一个数列s,其中的元素为s1,s2,s3......sn.元素要么是1(用'+'表示),要么是-1(用'-'表示) 这个数列以k个数为一个周期,且n能被k整除. ...

  4. [CF 960E] Alternating Tree

    前言 这题说难不难,说简单不简单.有很多细节的地方,没想清楚就会出问题. 题目 洛谷 思路 一讲这道题时,我就想到了分别计算点的贡献.然而老师使用了插子树的方法(并没有怎么听懂).做题之前瞥了一眼第一 ...

  5. 2021.5.10(cf)

    1.cf D. Maximum Sum of Products https://codeforces.com/contest/1519/problem/D 大意:给定一个数字n代表序列的长度,接下来n ...

  6. An Introduction to K-theory

    An Introduction to K-theory Eric M. Friedlander∗ Department of Mathematics, Northwestern University, ...

  7. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  8. 「日常训练」Skills(Codeforce Round #339 Div.2 D)

    题意(CodeForces 614D) 每个人有\(n(n\le 10^5)\)个技能,技能等级都在\([0,10^9]\)的范围,每个技能有一个当前等级,所有技能的最高等级都为A.一个人的力量被记做 ...

  9. linux 串口text模式安装,使用串口安装centos操作系统

    使用CSS3 Media Queries实现网页自适应 原文来源:http://webdesignerwall.com 翻译:http://xinyo.org 当今银屏分辨率从 320px (iPho ...

  10. 2019.5.summary

    2019.5.1 CF C. Prefix Sum Primes 感觉CF就是训练妳如何养成对题目强大的YY能力的QAQ 我们构造 如果只有一种,没辙,只能这样放 否则先放一个2,再放一个1 接下来把 ...

最新文章

  1. 面向对象三大特性(封装,继承,多态)之多态
  2. 最美的Linux中文版的吗,号称最美的Linux发行版——Elementary OS
  3. CRM_PRICING_MERGE_FROM_BUPA_OW
  4. usleep延时0.毫秒_【进阶】用swoole实现订单的延时处理(自动取消,还原库存等)...
  5. 陈赫入场,抖音背后的决心!
  6. 牛x!一个比传统数据库快 100-1000 倍的数据库!
  7. 6. 生信技能树——TCGA癌症数据1
  8. np学习——OSPF的典型配置案例
  9. 顶点计划1——信通2018级学生上早自习缺勤率情况分析
  10. 使用Ajax进行前后端交互(一)
  11. 零基础学习笔记 - ADF4159
  12. C语言——Hello World
  13. 基于php的地铁查询系统,基于php的苏州实时公交/地铁接口调用代码实例
  14. LC463. 岛屿的周长
  15. Matlab --- Matlab中常数c乘以矩阵A背后的故事
  16. android图片下载到本地
  17. OpenCV进行视频拼接
  18. 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...
  19. 西门子、ABB、霍尼韦尔、中控、力控...中国SCADADCS市场报告
  20. 亿级流量网站架构核心技术。(PDF版)

热门文章

  1. Golang入门教程(九)复合数据类型使用案例二
  2. 数据推动变革 PMC创新存储方案应对挑战
  3. 简单的Python购物流程
  4. 如何进行多语言发布,做国际化开发
  5. 算法设计和数据结构学习_2(常见排序算法思想)
  6. v-for key的作用
  7. 2017级面向对象程序设计——团队作业2
  8. Centos6.5 mysql折腾记
  9. 家庭路由器设置以及win10链接无线不显示登录密码 直接提示链接出错问题解决...
  10. VMware复制Centos6虚拟机要改的地方