結果
| 問題 |
No.1250 汝は倍数なりや?
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-12-16 15:17:07 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,155 bytes |
| コンパイル時間 | 1,589 ms |
| コンパイル使用メモリ | 172,124 KB |
| 実行使用メモリ | 13,880 KB |
| 最終ジャッジ日時 | 2024-09-20 05:07:39 |
| 合計ジャッジ時間 | 4,412 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 TLE * 1 -- * 30 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i, n) for (int i = 0; i < (n); i++)
#define P pair<ll, ll>
vector<P> prime_factorize(ll N) {
vector<P> res;
for (ll a = 2; a * a <= N; a++) {
// a で割り切れないとき
if (N%a) continue;
// 割り切れるとき, 何回割れるのかを試す
ll ex = 0;
while(N%a == 0) {
ex++;
N /= a;
}
res.push_back({a, ex}); // N は a で ex 回割れる
}
// 最後に(素数)が残った場合の処理
if (N != 1) res.push_back({N, 1});
return res;
}
int main() {
int N;
ll H;
cin >> N >> H;
if (H == 1) {
cout << "YES" << endl;
return 0;
}
vector<P> f1 = prime_factorize(H);
vector<ll> a(N);
rep(i, N) cin >> a[i];
// f1 に入っている素数でそれぞれ a[0]..a[N-1] が何回割れるか
rep(i, f1.size()) {
ll p = f1[i].first, ex_H = f1[i].second;
ll ex = 0;
rep(i, N) {
while(a[i] % p == 0) {
ex++;
a[i] /= p;
}
}
if (ex < ex_H) {
cout << "NO" << endl;
return 0;
}
}
cout << "YES" << endl;
}