結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
|
提出日時 | 2020-05-10 11:00:32 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,311 bytes |
コンパイル時間 | 87 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 27,460 KB |
最終ジャッジ日時 | 2024-07-07 10:24:20 |
合計ジャッジ時間 | 12,342 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 8 WA * 42 TLE * 1 -- * 41 |
ソースコード
MOD = 10 ** 9 + 7 INF = 10 ** 11 from collections import defaultdict 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 = defaultdict(int) 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 = [defaultdict(int)] + [factorization(a,primes) for a in A] for i in range(N): for k in A[i + 1]: A[i + 1][k] += A[i][k] 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 divisor -= 1 if M%p == 0: break if M > 1: print('NO') else: print('Yes') if __name__ == '__main__': main()