結果
| 問題 |
No.1746 Sqrt Integer Segments
|
| ユーザー |
googol_S0
|
| 提出日時 | 2021-11-18 00:16:50 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 515 ms / 2,000 ms |
| コード長 | 699 bytes |
| コンパイル時間 | 496 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 191,796 KB |
| 最終ジャッジ日時 | 2024-09-13 09:22:13 |
| 合計ジャッジ時間 | 13,662 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 28 |
ソースコード
N=int(input())
A=list(map(int,input().split()))
P=[]
M=1234567
F=[0]*M
D=[0]*M
Z=dict()
for i in range(2,M):
if F[i]:
continue
P.append(i)
Z[i]=len(P)-1
c=0
for j in range(i,M,i):
c+=1
if F[j]==0:
F[j]=i
D[j]=c
X=[[] for i in range(N+1)]
for i in range(N):
while A[i]>1:
x=F[A[i]]
A[i]=D[A[i]]
if len(X[i+1]) and X[i+1][-1]==x:
del X[i+1][-1]
else:
X[i+1].append(x)
from random import *
mod=randrange((1<<62)+1,1<<63)
DP=dict()
r=randrange(2,mod-1)
P=[1]
for i in range(M):
P.append(P[i]*r%mod)
x=0
DP[0]=1
ANS=0
for i in range(N):
for j in range(len(X[i+1])):
x^=P[Z[X[i+1][j]]]
DP[x]=DP.get(x,0)+1
ANS+=DP[x]-1
print(ANS)
googol_S0