QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 512 MB Total points: 100

#9994. waht 先生的法阵

统计

题目描述

waht 先生是一名法力强大的魔法师。

waht 先生为了增强自己的法力,设置了一个法阵。这个法阵中共有 $n$ 块魔法石,它们从左到右依次排成一列;并且从左数第 $i$ 块魔法石的编号为 $i$,其法力值初始为 $a_i$。

waht 先生可以获取一些魔法石的法力。然而由于这个法阵的特殊性质,在获取法力时,waht 先生必须先选择一块魔法石;并且一旦第 $x$ 块魔法石被选,接下来必须再选第 $x+\gcd(x,a_x)$ 块魔法石(这里 $\gcd(x,y)$ 表示 $x,y$ 的最大公约数),直到 $x+\gcd (x,a_x)>n$ 时 waht 先生会立即停止本次法力获取的过程。waht 先生获取的法力将会是过程中所选的所有魔法石的法力值之和。

waht 先生会对这个法阵进行 $q$ 次操作。具体的,有以下两类操作:

  • waht 先生选择两个数 $l,r\;(1\leq l\leq r\leq n)$,对区间 $[l,r]$ 中的所有魔法石施加法术,使得它们的法力值全部乘以 $c$。具体的,对于所有满足 $l\leq i\leq r$ 的 $i$,将 $a_i$ 的值修改为 $c\cdot a_i$。
  • waht 先生选择第 $x$ 块魔法石,并按照上述的规则获取法力。

每当 waht 先生选择某一块魔法石来获取法力时,你都需要帮他计算出他到底获得了多少法力。由于答案可能很大,你只需要求出答案对 $998244353$ 取模的结果。

输入格式

从标准输入读入数据。

第一行输入两个正整数 $n,q\;(1\leq n,q\leq 2.5\times 10^5)$,表示法阵中魔法石的数量和操作次数。

接下来一行,输入 $n$ 个正整数,其中第 $i$ 个为 $a_i\;(1\leq a_i< 998244353)$,表示魔法石初始的法力值。

接下来 $q$ 行,先输入一个 $op$,表示操作种类;

若 $op=1$,则再输入三个正整数 $l,r,c\;(1\leq l\leq r\leq n,2\leq c\leq 2.5\times 10^5)$,表示将区间 $[l,r]$ 中的所有魔法石的法力值乘以 $c$;

若 $op=2$,则再输入一个正整数 $x\;(1\leq x\leq n)$,表示获取法力的开始位置。

输出格式

输出到标准输出。

每当进行一次操作 $2$ 时,输出一行一个正整数,表示所要查询的答案对 $998244353$ 取模的值。

样例

输入

7 7
1 1 1 1 1 1 1
1 2 6 2
2 1
1 3 5 5
2 3
1 2 7 3
2 3
2 2

输出

7
22
36
42

解释

第一次操作,将区间 $[2,6]$ 中的魔法石的法力值乘以 $2$,法力值序列变为 $1,2,2,2,2,2,1$;

第二次操作,waht 先生选择第 $1$ 块魔法石,则编号为 $1,2,4,6$ 的魔法石会依次被选中,这些魔法石的法力值之和为 $7$;

第三次操作,将区间 $[3,5]$ 中的魔法石的法力值乘以 $5$,法力值序列变为 $1,2,10,10,10,2,1$;

第四次操作,waht 先生选择第 $3$ 块魔法石,则编号为 $3,4,6$ 的魔法石会依次被选中,这些魔法石的法力值之和为 $22$;

第五次操作,将区间 $[2,7]$ 中的魔法石的法力值乘以 $3$,法力值序列变为 $1,6,30,30,30,6,3$;

第六次操作,waht 先生选择第 $3$ 块魔法石,则编号为 $3,6$ 的魔法石会依次被选中,这些魔法石的法力值之和为 $36$;

第七次操作,waht 先生选择第 $2$ 块魔法石,则编号为 $2,4,6$ 的魔法石会依次被选中,这些魔法石的法力值之和为 $42$。

About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.