728x90
9753๋ฒ: ์ง ๊ณฑ
์ ์ K (1 ≤ K ≤ 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋, K๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ์์์ ๊ณฑ ์ค์์ ๊ฐ์ฅ ์์ ๊ณฑ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
โจ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int vec[50002];
vector<int> v;
for (int i = 0; i <= 50001; i++) {
vec[i] = i;
}
//์์ ๊ตฌํ๊ธฐ _ ์๋ผํ ์คํ
๋ค์ค์ ์ฒด
for (int i = 2; i <= 50001; i++) {
if (vec[i] == 0) {
continue;
}
else {
v.push_back(vec[i]);
}
for (int j = 2; j*vec[i] <= 50001; j++) {
vec[j*vec[i]] = 0;
}
}
vector<int> mul;
//์์๋ค์ ๊ณฑ ์ ์ฅ
for (int i = 0; i < v.size(); i++) {
for (int j = i + 1; j < v.size(); j++) {
mul.push_back(v[i] * v[j]);
}
}
//์ ์ฅํ ์์์ ๊ณฑ์ ์ ๋ ฌ
sort(mul.begin(), mul.end());
int T;
cin >> T;
while (T--) {
int K;
cin >> K;
int answer;
//์ด๋ถํ์์ผ๋ก ์ํ๋ ๊ฐ ์ฐพ๊ธฐ
int low = 0, high = mul.size() - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (mul[mid] >= K) {
answer = mid;
high = mid - 1;
}
else
low = mid + 1;
}
cout << mul[answer]<<'\n';
}
return 0;
}
๐ ๋ฌธ์ ํ์ด
์ ์ K (1 ≤ K ≤ 100,000)๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ์์์ ๊ณฑ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์
50,001๊น์ง์ ์์๋ง ๊ตฌํ๋ฉด 2์ ๊ณฑํด์ง ๊ฒฝ์ฐ, 100,000๋ณด๋ค ์ปค์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์๋ค
50,001 ๊น์ง์ ์์๋ฅผ ๊ตฌํด์ ์ ์ฅ์ ํด๋๊ณ
์์๋ค์ ๊ณฑ์ ์ ์ฅํ์ฌ ์ด๋ถํ์์ ํตํด K๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์๋ฅผ ๊ตฌํ์๋ค
โญ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ

728x90