SHAOXIAOJ正在加载中...

1706: 序列操作

金币值:2 定数:1 时间限制:1.000 s 内存限制:128 M
正确:1 提交:1 正确率:100.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 程序设计大赛

题目描述

淮北市布局新能源汽车产业,为了吸引用户电动汽车厂商希望为后排屏幕设计新的益智游戏。经过讨论,确定游戏的核心玩法,现需要测试其可行性。
对于给定的数列a,你需要按顺序完成一系列操作。
共有三种不同的操作:
1. 给出I,r,询问( ∑ai ) mod 998244353 的值;
2.给出l,r,v,对所有i = [l,r],将ai 修改为 ai/gcd(ai,v))
3. 给出l,v,将al,修改为al*gcd(al,v)。
其中,gcd(a,b)表示a,b的最大公因数。

输入格式

输入的第1行包含2个整数n,q,分别表示数列a的长度和操作次数。

接下来1行,包含n个整数,第i个整数表示ai。

接下来q行,每行包含3或4个整数,描述一次操作。第1个整数op表示操作类型。

.若op=1,后续2个整数l,r,表示进行操作1;

.若op=2,后续3个整数l,r,v. 表示进行操作2;

.若op=3,后续2个整数l,v,表示进行操作3。

上述操作及参数的含义见题目描述。

输出格式

对每次1类操作输出1行1个整数,表示对应的那次询问的答案。

输入样例    复制

4 4
42 525 750 64000
1 1 2
2 1 4 210
3 1 28
1 1 4

输出样例    复制

567
6431

提示

·1≤n,q≤2x1e5
·1≤l≤r≤n

·1 ≤ ai,v ≤ 1e7

1.询问(a1+a2)mod 998244353,输出567;
2.对整个数列进行2类操作,v=210,操作后数列为1,5,25,6400;
3.将a=1改成1 * gcd(1,28)=1,操作后数列为1,5,25,6400;
4.询问整个数列的和,输出6431。