結果

問題 No.2300 Substring OR Sum
ユーザー ntuda
提出日時 2023-05-13 12:40:50
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 504 ms / 2,000 ms
コード長 436 bytes
コンパイル時間 291 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 146,644 KB
最終ジャッジ日時 2024-11-29 06:01:16
合計ジャッジ時間 6,117 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())
A = list(map(int, input().split()))
maxa = max(A)
nb = maxa.bit_length()

X = [[0] * nb for _ in range(N)]
for i, a in enumerate(A):
    j = 0
    while a > 0:
        if a & 1:
            X[i][j] = 1
        a >>= 1
        j += 1

tmp = 1
ans = 0
for i in range(nb):
    tmp2 = N
    for j in reversed(range(N)):
        if X[j][i] == 1:
            tmp2 = j
        ans += tmp * (N - tmp2)
    tmp *= 2

print(ans)
0