这很自由,包括有序对
若一个正整数不被任何大于 的平方数整除,则称其为自由的。例如,、、、、、 是自由的,而 、、、 不是。
给定一个长度为 的正整数序列 ,你需要处理 次操作。操作有两种类型:
修改:给定下标 和值 ,将 修改为 。
查询:给定区间 ,求满足 且 是自由的有序对 的个数。
请注意,有序对 包括 的情况。
第一行包含两个整数 ,表示序列长度和操作次数。
第二行包含 个整数 ,表示初始序列。
接下来 行,每行描述一个操作:
修改操作以字符 U 开头,后接两个整数 和 ,表示将 修改为 。
U
查询操作以字符 Q 开头,后接两个整数 和 ,表示查询区间 。
Q
对于每个查询操作,输出一行一个整数,表示满足条件的有序对个数。
3 3 1 2 4 Q 1 3 U 3 2 Q 1 3
5 6
见 ex_free2.in/ans 这个样例满足 sub3 的约束条件
见 ex_free3.in/ans 这个样例满足 sub4 的约束条件
见 ex_free4.in/ans 这个样例满足 sub8 的约束条件
初始序列为 。
第一个查询:区间 内有序对如下:
:,无平方因子,满足。
:,满足。
:,有平方因子 ,不满足。
因此满足条件的有序对共有 个。
修改后序列为 。
第二个查询:区间 内所有有序对均满足条件,有序对共 个,故输出 。
本题采用捆绑测试。
其中 。
特殊性质 :对于所有 ,保证数据在一定范围内随机生成。
特殊性质 :对于所有查询操作 ,都有 。
特殊性质 :没有修改操作。
对于所有测试数据,,。