結果

問題 No.1884 Sequence
ユーザー gew1fw
提出日時 2025-06-12 16:04:26
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,131 bytes
コンパイル時間 158 ms
コンパイル使用メモリ 82,888 KB
実行使用メモリ 140,692 KB
最終ジャッジ日時 2025-06-12 16:04:48
合計ジャッジ時間 7,685 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 35 WA * 5
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import math
from functools import reduce

def input():
    return sys.stdin.read()

def main():
    data = input().split()
    N = int(data[0])
    A = list(map(int, data[1:N+1]))
    
    S = [x for x in A if x != 0]
    
    if not S:
        print("Yes")
        return
    
    if len(S) == 1:
        print("Yes")
        return
    
    min_S = min(S)
    max_S = max(S)
    
    if min_S == max_S:
        print("Yes")
        return
    
    deltas = [x - min_S for x in S]
    non_zero_deltas = [d for d in deltas if d != 0]
    
    g = reduce(math.gcd, non_zero_deltas)
    
    d_min = (max_S - min_S + (N - 2)) // (N - 1)
    
    def get_divisors(g_val):
        if g_val == 0:
            return []
        divisors = set()
        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 sorted(divisors)
    
    divisors = get_divisors(g)
    
    for d in divisors:
        if d >= d_min:
            print("Yes")
            return
    
    print("No")

if __name__ == "__main__":
    main()
0