수열의 합 1024

2022. 12. 21. 13:19boj

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

[1024번: 수열의 합

첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다.

www.acmicpc.net](https://www.acmicpc.net/problem/1024)

문제를 읽어보면 결국 시그마를 아느냐 에 관련된 내용이였다 .

처음 받은 length로 시그마 결과가 가능한지 안한지에 대한

판별식을 만들고

토탈 length가 100 보다 크거나 초기값이 음수가 나오게 되면

-1을 리턴하게 하고

같은 시그마가 가능하고, 결과값이 동일하다면, 수열을 출력하게 했다.

#include <iostream>

using namespace std;

int        sigma(int sum, int l)
{
    return ((2 * sum / l) - l + 1) / 2;
}

void solve(int n, int l)
{
    if (l > 100)
    {
        cout << "-1";
        return ;
    }
    int start = sigma(n, l);
    int i;
    if (start < 0)
    {
        cout << "-1";
        return ;
    }
    if ((start + start + l - 1) * l == n * 2)
    {
        for (i = 0; i < l; ++i) {
            cout << start + i;
            if (i != l - 1)
                cout << " " ;
        }
    } else {
        solve(n, l + 1);
    }
}

int main()
{
    int n, l;

    cin >> n >> l;
    solve(n ,l);
    return 0;
}

'boj' 카테고리의 다른 글

1697 숨바꼭질.  (0) 2022.12.21
1021 회전하는 큐.  (0) 2022.12.21
1012 유기농 배추.  (0) 2022.12.20
1010 다리놓기  (0) 2022.12.19
눈치우기 (boj 26215)  (0) 2022.12.19