CF 964C Alternating Sum
给定两正整数 $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$」 。
CF 964C Alternating Sum的更多相关文章
- Codeforces 964C Alternating Sum
Alternating Sum 题意很简单 就是对一个数列求和. 题解:如果不考虑符号 每一项都是前一项的 (b/a)倍, 然后考虑到符号的话, 符号k次一循环, 那么 下一个同一符号的位置 就是 这 ...
- codeforces 963A Alternating Sum
codeforces 963A Alternating Sum 题解 计算前 \(k\) 项的和,每 \(k\) 项的和是一个长度为 \((n+1)/k\) ,公比为 \((a^{-1}b)^k\) ...
- CF963A Alternating Sum
思路:利用周期性转化为等比数列求和. 注意当a != b的时候 bk * inv(ak) % (109 + 9)依然有可能等于1,不知道为什么. 实现: #include <bits/stdc+ ...
- Codeforces 963 A. Alternating Sum(快速幂,逆元)
Codeforces 963 A. Alternating Sum 题目大意:给出一组长度为n+1且元素为1或者-1的数组S(0~n),数组每k个元素为一周期,保证n+1可以被k整除.给a和b,求对1 ...
- [codeforces round#475 div2 ][C Alternating Sum ]
http://codeforces.com/contest/964/problem/C 题目大意:给出一个等比序列求和并且mod 1e9+9. 题目分析:等比数列的前n项和公式通过等公比错位相减法可以 ...
- Codeforces 963A Alternating Sum(等比数列求和+逆元+快速幂)
题目链接:http://codeforces.com/problemset/problem/963/A 题目大意:就是给了你n,a,b和一段长度为k的只有'+'和‘-’字符串,保证n+1被k整除,让你 ...
- zoj 3813 Alternating Sum(2014ACMICPC Regional 牡丹江站网络赛 E)
1.http://blog.csdn.net/dyx404514/article/details/39122743 思路:题目意思很清楚了,这里只说思路. 设区间[L,R],区间长度为len=(R-L ...
- [zoj3813]Alternating Sum 公式化简,线段树
题意:给一个长度不超过100000的原串S(只包含数字0-9),令T为将S重复若干次首尾连接后得到的新串,有两种操作:(1)修改原串S某个位置的值(2)给定L,R,询问T中L<=i<=j& ...
- CF 577B Modulo Sum
题意:给一个长度为n的正整数序列,问能不能找到一个不连续的子序列的和可以被m整除. 解法:抽屉原理+dp.首先当m<n时一定是有答案的,因为根据抽屉原理,当得到这个序列的n个前缀和%m时,一定会 ...
随机推荐
- tmux 用z关闭之后的恢复
ctrl+b 然后z是全屏 但是如果是ctrl+z就是关闭窗口了 tmux ls看所有窗口 然后 tmux attach -t 2或者3就恢复
- 多线程:InterlockedIncrement
1.InterlockedIncrement保护多线程中操作的整数. #include <stdio.h> #include <windows.h> volatile long ...
- 标准对象 -------JavaScript
本文摘要:http://www.liaoxuefeng.com/ 在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对 ...
- vue-transition动画
vue-transition动画 官网API: https://cn.vuejs.org/v2/guide/transitions.html demo点击显示与消失 <div id=" ...
- 【SQL】连接 —— 内连接、外连接、左连接、右连接、交叉连接
连接 · 内连接 · 外连接 · 左连接 · 右连接 · 全连接 · 交叉连接 · 匹配符号(+) 连接 根据表之间的关系,呈现跨表查询的结果. 外连接 内连接 左连接 右连接 全 ...
- Binary Agents-freecodecamp算法题目
Binary Agents 1.要求 传入二进制字符串,翻译成英语句子并返回. 二进制字符串是以空格分隔的. 2.思路 用.split(' ')将输入二进制字符串转化为各个二进制数字符串组成的数组 用 ...
- Mysql--数据定义语言(DDL)
DDL(Data Definition languages)数据定义语言,这些语句主要定义了不同的数据段,数据表.列.索引等操作,主要关键字有create.drop.alter. 一. 数据库的操作 ...
- DNS服务初步搭建
一.准备DNS服务环境 选择 bind dns服务软件包 直接yum安装 bind 和 bind-utils 工具包,测试机器安装bind-utils测试工具包. 服务程序名为 named 二.配置D ...
- 【CSS】简略说明css的权重之分
/*权重 :id > class > 标签 (小环境) 权重:内联 > 内部 > 外部 (大环境) 小环境处于内部环境中 */ <style> #p1{ /* id ...
- 2190: [SDOI2008]仪仗队(欧拉函数)
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3235 Solved: 2089 Description 作 ...