티스토리 뷰

반응형

✏️ 문제 링크

https://www.acmicpc.net/problem/1644

 

1644번: 소수의 연속합

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000)

www.acmicpc.net

 

✏️ 문제 설명

 

 

✏️ 문제 풀이

 

소수의 연속합을 구하는 문제입니다. 가장 먼저 소수는
에라토스테네스의 체알고리즘을 이용해서 구합니다. 그리고 구한 소수들을 vector에 추가해 줍니다.
그 후  합을 저장할 
sum변수, 갯수를 셀 count변수 반복문 변수를 저장할 en을 선언했습니다.
먼저 
vector의 크기만큼 for문을 돌려주고 그 안에서 계속 sum값을 0으로 초기화시킵니다. 그리고 나서 while반복문 안에서 en vector의 사이즈보다 작을 때까지 그리고 sum이 n보다 작을 때까지 돌리면서
sum==n일시 count값을 플러스해줍니다.

 

✏️ 문제 코드

#include<iostream>
#include<algorithm>
#include<vector>
#include<math.h>
using namespace std;
int arr[4000005] = { 0,1 };
int n, m;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	vector<int>v;
	for (int x = 1; x <= sqrt(4000005); x++) {
		if (arr[x] != 0)
			continue;
		for (int y = x * x; y <= 4000005; y += x)
			arr[y] = 1;
	}
	for (int x = 2; x <= n; x++) {
		if (arr[x] == 0)
			v.push_back(x);
	}
	int en = 0, count = 0;
	int sum = 0;
	for (int st = 0; st < v.size(); st++) {
		sum = 0;
		en = st;
		while (en < v.size() && sum < n) {
			sum += v[en];
			if (sum == n)
				break;
			en++;
		}
		if (sum == n)
			count++;
	}
	cout << count;
}

 

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 1697번 C++  (0) 2023.07.25
백준 1676번 C++  (0) 2023.07.25
백준 1629번 C++  (0) 2023.07.24
백준 1620번 C++  (0) 2023.07.24
백준 1600번 C++  (0) 2023.07.24
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함