https://atcoder.jp/contests/abc134/tasks/abc134_d
war schwierig. Oder besser gesagt, es war schwierig, die Problemstellung zu lesen.
Frage aufgeworfen: Ist $ O (\ sum (N / i)) $ rechtzeitig?
In diesem Problem ist es notwendig, $ N / i $ bei jedem i zu finden. Wenn Sie dies berücksichtigen, ist es gut, eine Integration durchzuführen. Da $ \ int (1 / N) = logN $ ist, kann es im schlimmsten Fall durch logN unterdrückt werden.
N = int(input())
a = list(map(int, input().split()))
a.insert(0, 0)
b = [0] * N
M = 0
for i in range(N, 0, -1):
ball = 0
for j in range(i + i, N + 1, i):
ball ^= b[j - 1]
b[i - 1] = ball ^ a[i]
M = sum(b)
print(M)
for i in range(N):
if b[i]:
print(i + 1, end = ' ')
Recommended Posts