ABC172 D - Sum of Divisors
問題原文
解法
普通に解けなかったので解説をガン見した。
キーとなる性質は「ある数 が 何かで割れると、答えが される」ということ。
で、例えば は当然どれも 5で割れるわけなんですが、これは答えに されるのと同じ。
つまり、等差数列の和の公式で一発で出せますね。。。
これを についてやればOK 。 で通る。
実装
N = int(input()) ans = 0 for x in range(1, N + 1): n = N // x ans += n * (2 * x + (n - 1) * x) // 2 print(ans)
感想
敗因は は切りわけにくそうと決め付けちゃったことかなぁ。。。 視点を切り替え切れませんでした。
こういうのかなり弱点そう。