안 쓰던 블로그

백준 1024 수열의 합 본문

알고리즘/알고리즘 문제 풀이

백준 1024 수열의 합

proqk 2020. 10. 17. 02:59
반응형

 

합이 n이고 길이가 최소 l인 연속된 수열을 구하는 문제

합이 n인 연속된 수열을 $x+(x+1)+(x+2)...(x+L-1)$ 로 두고 x에 대한 식으로 바꾸면 위에 풀이처럼 된다

l이 100까지라고 했으니까 l~100 사이에서 조건에 맞는 x를 찾으면 끝

 

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	long long n;
	int l, res = -1, index = 0;
	cin >> n >> l;
	for (int i = l; i <= 100; i++) { //100이하의 l중에 조건에 맞는 x를 찾는다
		int k = i * (i - 1) / 2;
		if ((n - k) % i == 0 && (n - k) / i >= 0) { //나눠 떨어지고, 길이가 맞으면 찾음
			res = (n - k) / i;
			index = i;
			break;
		}
	}
	if (res == -1) cout << -1;
	else for (int i = 0; i < index; i++) cout << res + i << " ";
}
반응형

'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글

신년맞이 boj - day1  (0) 2021.01.01
6603 로또  (0) 2020.11.26
백준 1005 ACM Craft  (4) 2020.10.17
백준 2252 줄 세우기 - 위상정렬  (0) 2020.10.17
백준 11282 한글, 11283 한글 2  (2) 2020.10.16
Comments