概要
愚直な方法では正解できません.
求めるべきことを明らかにして考えてみましょう.
問題原案:kusirakusira
解説
操作後の A の要素は非常に大きくなりうるため,実際に操作を再現して答えを求めることは難しいです.
別なアプローチを考えてみましょう.
Pi を i 番目に小さい素数とします.
整数 X=P1k1⋅P2k2⋅P3k3⋯ の約数の個数は (k1+1)(k2+1)(k3+1)⋯ と表されます.
X のもつ i 番目の素因数を 0 個以上 ki 個以下選ぶ組み合わせの総数です.
Ai=P1k1⋅P2k2⋅P3k3⋯ の値を,ベクトル Ki=(k1,k2,k3,…) として持つことを考えます.
すると,Q 回の操作は各々次のように言い換えることができます:
- x=:P1c1⋅P2c2⋅P3c3⋯ とする.
- l≤i≤r を満たす任意の整数 i について:
- Ki を Ki+(c1,c2,c3,…) で置換する.
以上の操作はimos法を用いるなどして簡単に実装できます.
求めるべきは,E=(1,1,1,…) として,Di=E⋅(Ki+E)) です.
なお実際には Ai,x≤100 より各ベクトルの要素数は高々 25 で十分と分かります.これは 100 以下の素数の個数です.
解説:uni_kakurenbo
実装例