結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
|
提出日時 | 2020-05-10 10:53:13 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,257 bytes |
コンパイル時間 | 267 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 852,096 KB |
最終ジャッジ日時 | 2024-07-07 06:41:51 |
合計ジャッジ時間 | 10,837 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 WA * 12 MLE * 1 -- * 61 |
ソースコード
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(20005) 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()