結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
![]() |
提出日時 | 2020-06-16 17:15:39 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,814 bytes |
コンパイル時間 | 1,376 ms |
コンパイル使用メモリ | 168,776 KB |
実行使用メモリ | 126,336 KB |
最終ジャッジ日時 | 2024-07-03 11:54:44 |
合計ジャッジ時間 | 10,117 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 22 WA * 33 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; for (int j = 0; j < prime.size(); j++) { if (p == 1) { puts("Yes"); break; } if (p < prime[j]) { puts("NO"); break; } int cnt = 0; while (p % prime[j] == 0) { cnt++; p /= prime[j]; } if (cnt > kosuu[r][j] - kosuu[l-1][j]) { puts("NO"); break; } } } return 0; }