結果
問題 |
No.1250 汝は倍数なりや?
|
ユーザー |
![]() |
提出日時 | 2020-10-09 22:12:12 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,407 bytes |
コンパイル時間 | 1,776 ms |
コンパイル使用メモリ | 175,400 KB |
実行使用メモリ | 10,624 KB |
最終ジャッジ日時 | 2024-07-20 12:00:03 |
合計ジャッジ時間 | 5,072 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 6 TLE * 1 -- * 42 |
ソースコード
#include <bits/stdc++.h> // #include <atcoder/all> // NOTE: AtCoderライブラリ #define rep(i, n) for (int i = 0; i < (int)(n); i++) using namespace std; // using namespace atcoder; // NOTE: AtCoderライブラリ typedef long long ll; typedef long double ld; typedef vector<int> vi; typedef vector<long long> vl; typedef vector<bool> vb; typedef vector<char> vc; typedef pair<int, int> pii; // #define INF __INT32_MAX__ // #define INF 1e9 // #define LINF __LONG_LONG_MAX__ int main() { int N, H; cin >> N >> H; map<int, int> hg; for (int i = 2; i <= sqrt(H); i++) { if (H % i != 0) continue; int ext = 0; while (H % i == 0) { ext++; H /= i; } hg[i] += ext; } if (H != 0) hg[H]++; // for (auto x : hg) { cout << x.first << "^" << x.second << endl; } vector<int> A(N); rep(i, N) { cin >> A[i]; if (A[i] == 1) continue; for (auto x : hg) { if (A[i] % x.first != 0) continue; while (A[i] % x.first == 0) { A[i] /= x.first; hg[x.first]--; } } } bool ok = true; for (auto x : hg) { if (x.second > 0) ok = false; } // for (auto x : hg) { cout << x.first << "^" << x.second << endl; } if (ok) { cout << "YES" << endl; } else { cout << "NO" << endl; } }