CodeForces 1109E. Sasha and a Very Easy Test
题目简述:给定$m \leq 10^9+9$,维护以下操作
1. "1 l r x":将序列$a[l], a[l+1], \dots, a[r]$都乘上$x$。
2. "2 p x":将$a[p]$除以$x$,保证可整除。
3. "3 l r":求$(a[l]+a[l+1]+\dots+a[r]) \bmod m$。
解:code
除了操作2以外,都显然可以用线段树维护。
主要遇到的问题是$m$不一定是质数,不妨设$m = p_1^{m_1} p_2^{m_2} \dots p_k^{m_k}$,其中$k = O(\log m)$。由于$m \leq 10^9+9$,则$k \leq 9$。
我们将所有数字$x$都分解成$(k+1)$个部分$x = x_0 p_1^{x_1} p_2^{x_2} \dots p_k^{x_k}$,其中$\gcd(x_0,m) = 1$。
对于操作2,设$a = a_0 p_1^{a_1} p_2^{a_2} \dots p_k^{a_k}$,把$a$除以$x$可以看做是两个操作:
2.1. 将$a_0$乘以$x_0^{-1} \bmod m$。而求$x_0^{-1} \bmod m$需要Euclid辗转相除法。
2.2. 将$a_1, \dots, a_k$依次减去$x_1, \dots, x_k$。
因此,我们只需要维护$a_0, a_1, \dots, a_k$即可,时间复杂度为$O((q+n) \log n \log m)$。
CodeForces 1109E. Sasha and a Very Easy Test的更多相关文章
- Codeforces 1109E. Sasha and a Very Easy Test 线段树
		
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1109E.html 题意 给定一个长度为 n 的数列 a,以及一个模数 M(不一定是质数). 要求支持 q ...
 - Codeforces 1109D. Sasha and Interesting Fact from Graph Theory
		
Codeforces 1109D. Sasha and Interesting Fact from Graph Theory 解题思路: 这题我根本不会做,是周指导带飞我. 首先对于当前已经有 \(m ...
 - Sasha and a Very Easy Test CodeForces - 1109E (数学,线段树)
		
大意: 给定n元素序列, q个操作: (1)区间乘 (2)单点除(保证整除) (3)区间求和对m取模 要求回答所有操作(3)的结果 主要是除法难办, 假设单点除$x$, $x$中与$m$互素的素因子可 ...
 - Codeforces Round #539 (Div. 1) E - Sasha and a Very Easy Test  线段树
		
如果mod是质数就好做了,但是做除法的时候对于合数mod可能没有逆元.所以就只有存一下mod的每个质因数(最多9个)的幂,和剩下一坨与mod互质的一部分.然后就能做了.有点恶心. CODE #incl ...
 - codeforces A. In Search of an Easy Problem
		
A. In Search of an Easy Problem time limit per test 1 second memory limit per test 256 megabytes inp ...
 - codeforces 430 A Points and Segments (easy)
		
题意:给出n个点,m个区间,需要给这些点涂上蓝色或者红色,使得每个区间里面的点的红色的点的个数与蓝色的点的个数的差值小于1 唉,题目的标题就标注了一个easy= = 最开始做的时候对点还有区间都排序了 ...
 - Codeforces 1109D Sasha and Interesting Fact from Graph Theory (看题解) 组合数学
		
Sasha and Interesting Fact from Graph Theory n 个 点形成 m 个有标号森林的方案数为 F(n, m) = m * n ^ {n - 1 - m} 然后就 ...
 - Codeforces  832A. Sasha and Sticks
		
It's one more school day now. Sasha doesn't like classes and is always bored at them. So, each day h ...
 - CodeForces - 1058A. In Search of an Easy Problem
		
这题,全零是esay有1是hard,真难呀. #include<bits/stdc++.h> using namespace std; int main(){ int n,i,x,flag ...
 
随机推荐
- GOOGLE VR SDK开发VR游戏,VR播放器之中的一个
			
近期一年来,VR虚拟现实和AR增强现实技术的宣传甚嚣尘上.事实上VR,AR技术非常早就有了,一直没有流行开来.不可否认价格是影响技术推广的最大壁垒. 谷歌对VR最大的贡献是提供了便宜的谷歌眼镜,依照G ...
 - mysql性能优化-慢查询分析、优化索引和配置 MySQL索引介绍
			
MySQL索引介绍 聚集索引(Clustered Index)----叶子节点存放整行记录辅助索引(Secondary Index)----叶子节点存放row identifier-------Inn ...
 - linux查看磁盘信息
			
linux查看磁盘挂载信息:df -hlinux查看文件夹大小:sudo du -h --max-depth=1
 - Lombok简介
			
Lombok简介 和其他语言相比,Java经常因为不必要的冗长被批评.Lombok提供了一系列注解用以在后台生成模板代码,将其从你的类中删除,从而有助于保持你的代码整洁.较少的模板意味着更简洁的代码, ...
 - Deployment相对ReplicaSet优势
			
系列目录 RS与Deployment主要用于替代RC.RS的全称为Replica Set.相对于RC,RS与Deployment的优势如下: RC只支持基于等式的selector,如env=dev或者 ...
 - 利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了
			
前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体 ...
 - 区分拖曳(drag)和点击(click)事件
			
假设页面上有一个a标签: <a href="http://www.google.com">google</a> 现在需要对这个标签进行拖放操作,会发现当拖曳 ...
 - Struts2  原理(转载)
			
图来源于Struts2官方站点,是Struts 2 的整体结构. Struts2框架由3个部分组成:核心控制器FilterDispatcher.业务控制器和用户实现的业务逻辑组件.在这3个部分里,St ...
 - CXF实战之自己定义拦截器(五)
			
CXF已经内置了一些拦截器,这些拦截器大部分默认加入到拦截器链中,有些拦截器也能够手动加入,如手动加入CXF提供的日志拦截器.也能够自己定义拦截器.CXF中实现自己定义拦截器非常easy.仅仅要继承A ...
 - [学些东西]用爬虫练习网站来练习burp suite
			
最近看爬虫的内容.刚好看到黑板客爬虫第二关http://www.heibanke.com/lesson/crawler_ex01. ADO的i春秋课程里面提到的.另外推荐学习爬虫的好书<web ...