結果
| 問題 |
No.854 公平なりんご分配
|
| コンテスト | |
| ユーザー |
🍮かんプリン
|
| 提出日時 | 2020-06-16 17:19:45 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,873 bytes |
| コンパイル時間 | 1,347 ms |
| コンパイル使用メモリ | 167,432 KB |
| 実行使用メモリ | 126,336 KB |
| 最終ジャッジ日時 | 2024-07-03 11:54:57 |
| 合計ジャッジ時間 | 8,900 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 37 WA * 18 RE * 37 |
ソースコード
/**
* @FileName a.cpp
* @Author kanpurin
* @Created 2020.06.16 17:15:34
**/
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
int main() {
int n;
cin >> n;
vector< int > a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int N = 2 * 1000;
vector< bool > isprime(N + 1, true);
vector< int > prime;
isprime[0] = isprime[1] = false;
for (int i = 2; i * i <= N; i++) {
if (isprime[i]) {
for (int j = i + i; j <= N; j += i) {
isprime[j] = false;
}
}
}
for (int i = 2; i <= N; i++) {
if (isprime[i]) {
prime.push_back(i);
}
}
vector< vector< int > > kosuu(n + 1, vector< int >(prime.size(), 0));
for (int i = 0; i < n; i++) {
kosuu[i + 1] = kosuu[i];
for (int j = 0; j < prime.size(); j++) {
if (a[i] == 1) break;
if (a[i] < prime[j]) {
cerr << "Error!" << endl;
return 1;
}
while (a[i] % prime[j] == 0) {
a[i] /= prime[j];
kosuu[i + 1][j]++;
}
}
}
int q;cin >> q;
for (int i = 0; i < q; i++) {
int p, l, r;
cin >> p >> l >> r;
bool ok = false;
for (int j = 0; j < prime.size(); j++) {
if (p == 1) {
puts("Yes");
ok = true;
break;
}
if (p < prime[j]) {
break;
}
int cnt = 0;
while (p % prime[j] == 0) {
cnt++;
p /= prime[j];
}
if (cnt > kosuu[r][j] - kosuu[l-1][j]) {
break;
}
}
if (p != 1 || !ok) {
puts("NO");
}
}
return 0;
}
🍮かんプリン