結果
問題 | No.1036 Make One With GCD 2 |
ユーザー | Shinya Fujita |
提出日時 | 2024-11-02 00:50:49 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 955 ms / 2,000 ms |
コード長 | 1,655 bytes |
コンパイル時間 | 342 ms |
コンパイル使用メモリ | 82,500 KB |
実行使用メモリ | 234,768 KB |
最終ジャッジ日時 | 2024-11-02 00:51:19 |
合計ジャッジ時間 | 27,324 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 955 ms
234,248 KB |
testcase_01 | AC | 510 ms
202,236 KB |
testcase_02 | AC | 642 ms
194,796 KB |
testcase_03 | AC | 277 ms
127,188 KB |
testcase_04 | AC | 301 ms
159,144 KB |
testcase_05 | AC | 191 ms
86,372 KB |
testcase_06 | AC | 190 ms
86,248 KB |
testcase_07 | AC | 337 ms
142,536 KB |
testcase_08 | AC | 346 ms
130,956 KB |
testcase_09 | AC | 596 ms
197,444 KB |
testcase_10 | AC | 590 ms
186,980 KB |
testcase_11 | AC | 598 ms
197,816 KB |
testcase_12 | AC | 607 ms
187,232 KB |
testcase_13 | AC | 740 ms
224,908 KB |
testcase_14 | AC | 781 ms
234,768 KB |
testcase_15 | AC | 727 ms
221,080 KB |
testcase_16 | AC | 728 ms
221,688 KB |
testcase_17 | AC | 767 ms
223,720 KB |
testcase_18 | AC | 198 ms
87,268 KB |
testcase_19 | AC | 210 ms
88,040 KB |
testcase_20 | AC | 212 ms
88,152 KB |
testcase_21 | AC | 212 ms
88,168 KB |
testcase_22 | AC | 750 ms
219,948 KB |
testcase_23 | AC | 607 ms
178,296 KB |
testcase_24 | AC | 775 ms
222,416 KB |
testcase_25 | AC | 711 ms
208,496 KB |
testcase_26 | AC | 711 ms
217,744 KB |
testcase_27 | AC | 185 ms
86,260 KB |
testcase_28 | AC | 194 ms
86,244 KB |
testcase_29 | AC | 185 ms
86,624 KB |
testcase_30 | AC | 183 ms
86,248 KB |
testcase_31 | AC | 185 ms
86,368 KB |
testcase_32 | AC | 184 ms
86,372 KB |
testcase_33 | AC | 184 ms
86,500 KB |
testcase_34 | AC | 197 ms
86,372 KB |
testcase_35 | AC | 186 ms
86,368 KB |
testcase_36 | AC | 186 ms
86,368 KB |
testcase_37 | AC | 186 ms
86,364 KB |
testcase_38 | AC | 844 ms
208,784 KB |
testcase_39 | AC | 742 ms
208,724 KB |
testcase_40 | AC | 616 ms
178,176 KB |
testcase_41 | AC | 808 ms
208,856 KB |
testcase_42 | AC | 816 ms
209,028 KB |
testcase_43 | AC | 884 ms
209,040 KB |
testcase_44 | AC | 912 ms
208,716 KB |
ソースコード
from math import gcd from turtle import right class SegmentTree: def __init__(self, op, e, v): self.e = e self.op = op self.n = len(v) self.N = 2 ** (self.n-1).bit_length() self.seg_data = [e for _ in range(self.N-1)] \ + v + [e for _ in range(self.N-self.n)] for i in range(2*self.N-2, 0, -2): self.seg_data[(i-1)//2] = op(self.seg_data[i], self.seg_data[i-1]) def __len__(self): return self.n def __getitem__(self, i): return self.seg_data[self.N-1+i] def __setitem__(self, i, x): idx = self.N - 1 + i self.seg_data[idx] = x while idx: idx = (idx-1) // 2 self.seg_data[idx] = self.op(self.seg_data[2*idx+1], self.seg_data[2*idx+2]) def query(self, i, j): # [i, j) if i == j: return None else: idx1 = self.N - 1 + i idx2 = self.N - 2 + j # 閉区間にする result = self.e while idx1 < idx2 + 1: if idx1&1 == 0: # idx1が偶数 result = self.op(result, self.seg_data[idx1]) if idx2&1 == 1: # idx2が奇数 result = self.op(result, self.seg_data[idx2]) idx2 -= 1 idx1 //= 2 idx2 = (idx2 - 1)//2 return result N = int(input()) A = list(map(int, input().split())) seg = SegmentTree(op=gcd, e=0, v=A) ans = N * (N+1) // 2 right = 0 for i in range(N): while right < N and seg.query(i, right+1) != 1: right += 1 ans -= right - i print(ans)