A%B=A−⌊A/B⌋×B であることを利用すると
S=∑k=1N(X−⌊X/k⌋×k)
=XN−∑k=1N(⌊X/k⌋×k)
=XN−∑i=1Xi×(N以下かつXを割った時の商がiである自然数の和)
となります.
また, X を自然数で割った時の商は高々 2X+1 種類です.
証明:
1 以上 X 以下の自然数で X を割ったときの商はX 種類, X より大きい自然数で割った時の商は0以上 X
未満であり高々X+1 種類で, 合わせて 2X+1 種類以下になります.
よって, 商としてあり得る数に対して上記の式を計算すると O(X) (または, O(min(X,N)))で解くことができます.