πŸ’  Cpp/[BOJ] λ‹¨κ³„λ³„λ‘œ 풀어보기

[BOJ][C++] λ°±μ€€ 2581번: μ†Œμˆ˜ (Bronze II)

선달 2024. 12. 26. 01:40
λ°˜μ‘ν˜•

문제

μžμ—°μˆ˜ Mκ³Ό N이 μ£Όμ–΄μ§ˆ λ•Œ M이상 Nμ΄ν•˜μ˜ μžμ—°μˆ˜ 쀑 μ†Œμˆ˜μΈ 것을 λͺ¨λ‘ 골라 이듀 μ†Œμˆ˜μ˜ ν•©κ³Ό μ΅œμ†Ÿκ°’μ„ μ°ΎλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.
예λ₯Ό λ“€μ–΄ M=60, N=100인 경우 60이상 100μ΄ν•˜μ˜ μžμ—°μˆ˜ 쀑 μ†Œμˆ˜λŠ” 61, 67, 71, 73, 79, 83, 89, 97 총 8κ°œκ°€ μžˆμœΌλ―€λ‘œ, 이듀 μ†Œμˆ˜μ˜ 합은 620이고, μ΅œμ†Ÿκ°’μ€ 61이 λœλ‹€.

μž…λ ₯

μž…λ ₯의 첫째 쀄에 M이, λ‘˜μ§Έ 쀄에 N이 주어진닀.
Mκ³Ό N은 10,000μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©°, M은 N보닀 μž‘κ±°λ‚˜ κ°™λ‹€.

좜λ ₯

M이상 Nμ΄ν•˜μ˜ μžμ—°μˆ˜ 쀑 μ†Œμˆ˜μΈ 것을 λͺ¨λ‘ μ°Ύμ•„ 첫째 쀄에 κ·Έ 합을, λ‘˜μ§Έ 쀄에 κ·Έ 쀑 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.
단, M이상 Nμ΄ν•˜μ˜ μžμ—°μˆ˜ 쀑 μ†Œμˆ˜κ°€ 없을 κ²½μš°λŠ” 첫째 쀄에 -1을 좜λ ₯ν•œλ‹€.

 

풀이

// 풀이 : https://whkakrkr.tistory.com

#include <iostream>
#include <vector>

using namespace std;

const int INF = 10001;

int main() {
    ios_base::sync_with_stdio(false);
	cout.tie(NULL);
	cin.tie(NULL);
	
	vector<bool>prime(INF, true);
	prime[0] = prime[1] = false;
	for(int i=2; i<INF; i++) {
	    if(!prime[i]) {
	        continue;
	    }
	    for(int j=i*i; j<INF; j+=i) {
	        prime[j] = false;
	    }
	}
	
	int m,n;
	cin >> m >> n;
	int min_prime=-1, sum=0;
	for(int i=m; i<=n; i++) {
	    if(prime[i]) {
	        if(min_prime==-1) {
	            min_prime = i;
	        }
	        sum += i;
	    }
	}
	
	if(sum==0) {
	    cout << -1;
	} else {
	    cout << sum << "\n" << min_prime;
	}
	
    return 0;
}
λ°˜μ‘ν˜•