传送门 事实上在打表找完规律之后会发现好数只有质数,0,6,和2的非负整数次幂。这样的话,我们可以快速判断一个数是不是好数。然后分析一下算法,每个数每次被取模至少变成原来的0.5倍,于是
l
o
g
n
logn
logn次取模之后就成1了,这样的话直接暴力修改,每次单点修改会为时间复杂度提供
l
o
g
n
logn
logn的贡献,最多是
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)的贡献,于是将区间取模分解成单点取模,记录区间最大值剪枝就行了。实在不放心的可以线性筛个素数什么的。 代码