結果
問題 |
No.1884 Sequence
|
ユーザー |
![]() |
提出日時 | 2025-04-15 21:57:28 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,230 bytes |
コンパイル時間 | 235 ms |
コンパイル使用メモリ | 81,828 KB |
実行使用メモリ | 144,240 KB |
最終ジャッジ日時 | 2025-04-15 21:58:39 |
合計ジャッジ時間 | 7,264 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 WA * 5 |
ソースコード
import sys import math def main(): input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 A = list(map(int, input[idx:idx+N])) S = [x for x in A if x != 0] if not S: print("Yes") return if len(S) == 1: print("Yes") return S.sort() deltas = [] for i in range(len(S)-1): deltas.append(S[i+1] - S[i]) g = 0 for delta in deltas: g = math.gcd(g, delta) if g == 0: print("Yes") return min_S = S[0] max_S = S[-1] def get_divisors(g_val): divisors = set() if g_val == 0: return divisors for i in range(1, int(math.isqrt(g_val)) + 1): if g_val % i == 0: divisors.add(i) divisors.add(g_val // i) return divisors divisors = get_divisors(g) for d in divisors: if d == 0: continue if (max_S - min_S) > (N-1)*d: continue a_candidate = max_S - (N-1)*d if a_candidate > 0 and a_candidate <= min_S: print("Yes") return print("No") if __name__ == "__main__": main()