結果
| 問題 |
No.1233 割り切れない気持ち
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 2020-09-18 22:17:17 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 801 bytes |
| コンパイル時間 | 494 ms |
| コンパイル使用メモリ | 82,164 KB |
| 実行使用メモリ | 120,752 KB |
| 最終ジャッジ日時 | 2024-06-22 16:57:52 |
| 合計ジャッジ時間 | 6,718 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 17 WA * 22 |
ソースコード
"""
自分より大きい奴に関しては、そのまま入る
同じ数字を同時に処理することでlog計算量にする
全ての2対 = sum(A) * (N-1)からどこまで減るかを計算する
同じ数字同士は削っておく
数字iがk個あるとする
x*i <= < (x+1)*i に数字がy個あった場合、x*i*k*y減る
これは累積和で行ける
"""
from sys import stdin
N = int(stdin.readline())
A = list(map(int,stdin.readline().split()))
ans = 0
B = [0] * (2*10**5+1)
for i in A:
ans += i * N
B[i] += 1
BS = []
for i in range(len(B)):
if i == 0:
BS.append(B[i])
else:
BS.append(BS[-1] + B[i])
for i in range(1,len(BS)):
for r in range(2*i-1,len(BS),i):
l = r - i
ans -= (l+1) * (BS[r]-BS[l]) * B[i]
print (ans)
SPD_9X2