結果
| 問題 |
No.854 公平なりんご分配
|
| コンテスト | |
| ユーザー |
tenten
|
| 提出日時 | 2020-12-16 10:10:03 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,568 bytes |
| コンパイル時間 | 2,143 ms |
| コンパイル使用メモリ | 76,972 KB |
| 実行使用メモリ | 259,512 KB |
| 最終ジャッジ日時 | 2024-09-20 04:35:17 |
| 合計ジャッジ時間 | 59,245 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 56 WA * 36 |
ソースコード
import java.util.*;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean[] isNotPrime = new boolean[2000];
int size = 0;
for (int i = 2; i < 2000; i++) {
if (!isNotPrime[i]) {
size++;
for (int j = 2; j * i < 2000; j++) {
isNotPrime[j * i] = true;
}
}
}
int[] primes = new int[size];
int idx = 0;
for (int i = 2; i < 2000; i++) {
if (!isNotPrime[i]) {
primes[idx] = i;
idx++;
}
}
int[][] counts = new int[n + 1][];
counts[0] = new int[size];
for (int i = 0; i < n; i++) {
int x = sc.nextInt();
counts[i + 1] = (int[])counts[i].clone();
for (int j = 0; j < size && x > 1; j++) {
while (x % primes[j] == 0) {
counts[i + 1][j]++;
x /= primes[j];
}
}
}
int q = sc.nextInt();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < q; i++) {
int p = sc.nextInt();
int left = sc.nextInt() - 1;
int right = sc.nextInt();
for (int j = 0; j < size && p > 1; j++) {
int limit = counts[right][j] - counts[left][j];
for (int k = 0; k < limit; k++) {
if (p % primes[j] == 0) {
p /= primes[j];
} else {
break;
}
}
}
if (p == 1) {
sb.append("Yes");
} else {
sb.append("NO");
}
sb.append("\n");
}
System.out.print(sb);
}
}
tenten