結果
| 問題 | No.1250 汝は倍数なりや? | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2021-04-03 18:03:47 | 
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,769 bytes | 
| コンパイル時間 | 1,308 ms | 
| コンパイル使用メモリ | 112,852 KB | 
| 実行使用メモリ | 15,780 KB | 
| 最終ジャッジ日時 | 2024-12-25 06:13:25 | 
| 合計ジャッジ時間 | 30,806 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 31 WA * 4 TLE * 14 | 
ソースコード
#include <iostream>
//#include<atcoder/all>
#include <numeric>
#include <cmath>
#include <limits>
#include <stdio.h>
#include <iomanip>
#include <string> 
#include <vector>
#include <algorithm>
#include <utility> 
#include <tuple> 
#include <cstdint> 
#include <cstdio> 
#include <map> 
#include <queue>
#include <set> 
#include <stack> 
#include <deque> 
#include <unordered_map> 
#include <unordered_set>
#include <bitset> 
#include <cctype>
//using namespace atcoder;
using namespace std;
using ll = long long;
#define all(A) A.begin(),A.end()
using vll = vector<ll>;
#define rep(i, n) for (long long i = 0; i < (long long)(n); i++)
using Graph = vector<vector<vector<pair<ll, ll>>>>;
ll gcd(ll(a), ll(b)) {
	ll c = a;
	while (a % b != 0) {
		c = a % b;
		a = b;
		b = c;
	}
	return b;
}
ll N, M, Q;
ll an = 0;
vll A, B, C, D;
void next_combination(vll S){
	if (S.size() == N) {
		ll k = 0;
		rep(q, Q) {
			
			if (S[B[q]] - S[A[q]] == C[q])k += D[q];
			
		}
		an = max(an, k);
		//cout << k << endl;
	}
	else {
		vll NE = S;
		if (S.size() == 0) {
			for (ll j = 1; j <= M; j++) {
				NE.push_back(j);
				next_combination(NE);
				NE.pop_back();
			}
		}
		else {
			for (ll j = S[S.size() - 1]; j <= M; j++) {
				
				NE.push_back(j);
				next_combination(NE);
				NE.pop_back();
			}
		}
		
	}
	return;
}
int main(){
	ll N,H;
	cin >> N>>H;
	map<ll, ll> M;
	rep(i, N) {
		ll A;
		cin >> A;
		for (ll k = 2; k * k <= A; k++) {
			while (A % k == 0) {
				M[k]++;
				A /= k;
			}
		}
		if (A != 1) {
			M[A]++;
		}
	}
	bool C = true;
	for (ll k = 2; k * k <= H; k++) {
		while (H % k == 0) {
			if (M[k] == 0)C = false;
			H /= k;
			M[k]--;
		}
	}
	if (H != 1) {
		if (M[H] == 0)C = false;
		
	}
	if (C)cout << "YES" << endl;
	else cout << "NO" << endl;
}
            
            
            
        