結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
![]() |
提出日時 | 2020-06-16 20:38:12 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,119 bytes |
コンパイル時間 | 1,845 ms |
コンパイル使用メモリ | 169,472 KB |
実行使用メモリ | 126,248 KB |
最終ジャッジ日時 | 2024-07-03 11:58:13 |
合計ジャッジ時間 | 12,960 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 56 WA * 36 |
ソースコード
/** * @FileName a.cpp * @Author kanpurin * @Created 2020.06.16 20:38:06 **/ #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() + 1, 0)); for (int i = 0; i < n; i++) { kosuu[i + 1] = kosuu[i]; if (a[i] == 0) { kosuu[i + 1][prime.size()]++; continue; } for (int j = 0; j < prime.size(); j++) { if (a[i] == 1) break; if (a[i] < prime[j]) { cerr << "Error!" << a[i] << " " << prime[j] << 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; if (kosuu[r][prime.size()] - kosuu[l-1][prime.size()] > 0) { puts("Yes"); continue; } 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; }