解説
便宜上,整数列 A,B の範囲外の値を全て 0 とします.和の範囲を定める条件 ⌊ji⌋=k は
jk≤i<j(k+1)
と同値なので,k≥1 に対する Ck は
Ck=j=1∑⌊N/k⌋Bji=jk∑j(k+1)−1Ai
と書き直せます.A の累積和を O(M) で前計算しておけば,この式に従って各 k=1,2,…,N に対する Ck をそれぞれ O(kN) で計算することができます.k=0 のときは
C0=j=1∑MBji=0∑j−1Ai
となり,こちらも A の累積和を用いれば O(M) で計算できます.全体の計算量は O(M+NlogN) となり本問の制約下で十分高速です.