結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
|
提出日時 | 2019-07-27 12:42:58 |
言語 | Java (openjdk 23) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,322 bytes |
コンパイル時間 | 2,660 ms |
コンパイル使用メモリ | 79,076 KB |
実行使用メモリ | 121,384 KB |
最終ジャッジ日時 | 2024-07-02 10:55:18 |
合計ジャッジ時間 | 33,123 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 1 |
other | AC * 1 WA * 49 TLE * 1 -- * 41 |
ソースコード
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; class Main { public static void main(String[] args) { new Main().run(); } void run() { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] A = new int[N]; for (int i = 0; i < N; ++i) A[i] = sc.nextInt(); int Q = sc.nextInt(); ArrayList<Integer> primes = new ArrayList<>(); out: for (int i = 2; i <= 2 * 1000; ++i) { for (int j = 2; j * j <= i; ++j) { if (i % j == 0) continue out; } primes.add(i); } int[][] cnt = new int[N][primes.size()]; for (int i = 0; i < N; ++i) { for (int j = 0; j < primes.size(); ++j) { if (i > 0) cnt[i][j] = cnt[i - 1][j]; while (A[i] % primes.get(j) == 0) { cnt[i][j]++; A[i] /= primes.get(j); } } } for (int t = 0; t < Q; ++t) { int P = sc.nextInt(); int L = sc.nextInt(); int R = sc.nextInt(); --L; --R; boolean ok = true; int[] cnt2 = new int[primes.size()]; for (int i = 0; i < primes.size(); ++i) { while (P % primes.get(i) == 0) { cnt2[i]++; P /= primes.get(i); } ok &= cnt[R][i] - (L > 0 ? cnt[L - 1][i] : 0) >= cnt2[i]; } System.out.println(ok ? "Yes" : "No"); } } void tr(Object... objects) { System.out.println(Arrays.deepToString(objects)); } }