※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 24039번 문제인 2021은 무엇이 특별할까?이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/24039
24039번: 2021은 무엇이 특별할까?
백준 온라인 저지의 송년대회 Good Bye BOJ, 2021!의 개최일은 2021년 12월 31일이다. 원이는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2021이 무언가 특별하다는 사실을 깨달았다. 그렇
www.acmicpc.net
먼저 소수를 크기순으로 저장해둔 벡터를 준비하자. 두 연속한 소수 101과 103을 곱해도 N의 제한인 10,000보다 곱이 커지므로 103 이하의 소수들만 구해도 충분하다.
위에서 구한 소수의 벡터를 이용해 가장 작은 두 연속한 소수의 쌍부터 하나하나 구해나가면서 처음으로 N보다 커지는 시점을 찾으면 문제를 해결할 수 있다. 이는 반복문을 이용해 구현해낼 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
using namespace std;
int N;
vector<int> p;
int ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
for (int i = 2; i < 104; i++) {
bool chk = 1;
for (int j = 2; j < i; j++) {
if (i % j == 0) chk = 0;
}
if (chk) p.emplace_back(i);
}
cin >> N;
for (int i = 0; ans <= N; i++) ans = p[i] * p[i + 1];
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 6550 // C++] 부분 문자열 (0) | 2023.02.21 |
---|---|
[BOJ 12518 // C++] Centauri Prime (Small2) (0) | 2023.02.21 |
[BOJ 12871 // C++] 무한 문자열 (0) | 2023.02.21 |
[BOJ 9694 // C++] 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 (0) | 2023.02.21 |
[BOJ 12517 // C++] Centauri Prime (Small1) (0) | 2023.02.21 |