結果

問題 No.854 公平なりんご分配
ユーザー hedwig100
提出日時 2020-05-10 10:51:09
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,254 bytes
コンパイル時間 196 ms
コンパイル使用メモリ 81,772 KB
実行使用メモリ 103,832 KB
最終ジャッジ日時 2024-07-07 06:39:14
合計ジャッジ時間 13,693 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 17 WA * 33 TLE * 1 -- * 41
権限があれば一括ダウンロードができます

ソースコード

diff #

MOD = 10 ** 9 + 7
INF = 10 ** 11

def sieve(n):
    if n == 1:return []
    primes = [1 if i%2 == 1 else 0 for i in range(n + 1)]
    primes[1] = 0
    primes[2] = 1
    for i in range(3,n + 1,2):
        if i * i > n:
            break
        if primes[i]:
            for j in range(i * i,n + 1,i):
                primes[j] = 0
    return [p for p in range(2,n + 1) if primes[p] == 1]

def factorization(n,primes):
    factor = {p:0 for p in primes}
    for p in primes:
        while n%p == 0:
            n //= p
            factor[p] += 1
    
    if n != 1:
        factor[n] = 1
    
    return factor

def main():
    N = int(input())
    primes = sieve(60)
    A = list(map(int,input().split()))
    A = [{p:0 for p in primes}] + [factorization(a,primes) for a in A]
    for i in range(N):
        for p in primes:
            A[i + 1][p] += A[i][p]
    
    Q = int(input())
    for _ in range(Q):
        M,l,r = map(int,input().split())
        for p in primes:
            divisor = A[r][p] - A[l - 1][p]
            while M%p == 0 and divisor > 0:
                M //= p
            if M%p == 0:
                break
        if M > 1:
            print('NO')
        else:
            print('Yes')

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