문제: https://www.acmicpc.net/problem/1024
1023번 문제에서 씨름하다가 이렇게 쉬운 문제를 만나니 상당히 반갑네요 ㅋ
수열의 합은 간단하게 n(n+1)/2 를 응용해서 계산하고 l 이 최대 100이므로 시간 복잡도도 크게 신경안쓰고 풀 수 있었습니다.
my solving
c++
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <fstream> #include <iostream> #include <cstring> #include <climits> #include <algorithm> using namespace std; typedef long long ll; ll sum(ll startNum, int n) { if (n % 2 == 1) return sum(startNum + 1, n - 1) + startNum; return (startNum * 2 + n - 1) * (n / 2); } int main() { ll n; int l; cin >> n >> l; int ret = -1; int ret2 = 0; for (int i = l; i <= 100; i++) { ll start = (n / i) + (i / 2) - i + 1; if (start < 0) continue; if (sum(start, i) == n) { ret = start; ret2 = i; break; } } if (ret != -1) { for (int i = 0; i < ret2; i++) { if (i != 0) cout << " "; cout << i + ret; } } else cout << -1; cout << endl; return 0; } | cs |
'Algorithm, Data structure > Solved Algorithmic Problem' 카테고리의 다른 글
BAEKJOON 1027 - 고층 건물 (0) | 2016.08.10 |
---|---|
BAEKJOON 1026 - 보물 (0) | 2016.08.09 |
BAEKJOON 1022 - 소용돌이 예쁘게 출력하기 (2) | 2016.08.04 |
BAEKJOON 1021 - 회전하는 큐 (0) | 2016.08.03 |
BAEKJOON 1019 - 책 페이지 (0) | 2016.08.02 |