알고리즘 모음(C++)

백준 2960 - 에라토스테네스의 체(C++) 본문

백준

백준 2960 - 에라토스테네스의 체(C++)

공대생의 잡다한 사전 2022. 5. 16. 23:54

문제 링크입니다. https://www.acmicpc.net/problem/2960

 

2960번: 에라토스테네스의 체

2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다.

www.acmicpc.net

에라토스테네스의 체를 사용하는 문제입니다.

에라토스테네스의 체 기본 원리를 이용해 지워지는 K번째 수를 구하는 문제입니다.

여기서는 소수도 지워야함으로 이를 고려해주기만 하면 쉽게 풀 수 있습니다.

 

 

자세한 것은 코드를 참고해주세요

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <functional>
#include <algorithm>

using namespace std;

int N, K;
int check[1001];

void solve() {
    int remove = 0;
    check[1] = 1;
    for (int i = 2; i <= N; i++) {
        if (check[i] == 1) continue;
        remove++;
        if (remove == K) {
            cout << i;
            return;
        }
        for (int j = i * 2; j <= N; j+=i) {
            if (check[j] == 0) remove++;
            if (remove == K) {
                cout << j;
                return;
            }
            check[j] = 1;
        }
    }
}

int main()
{
    cin.tie(0);
    cout.tie(0);
    cin >> N >> K;
    solve();
    return 0;

}

 

 

질문 및 조언은 댓글 남겨주세요

'백준' 카테고리의 다른 글

백준 11085 - 군사 이동(C++)  (0) 2022.05.18
백준 16562 - 친구비(C++)  (0) 2022.05.18
백준 1854 - K번째 최단경로 찾기(C++)  (0) 2022.05.16
백준 1162 - 도로포장(C++)  (0) 2022.05.14
백준 23085 - 판치기(C++)  (0) 2022.05.03