본문 바로가기
알고리즘 문제 풀이

[백준] 수열의 합 - 복습

by pinok1o 2021. 1. 31.

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

N = (x + 1) + ... + (x + L)
N = Lx + L * (L + 1 ) / 2
이 방정식에서 x를 구해서 x부터 L개를 출력하면 된다.


#include <iostream>

using namespace std;

int main()
{
    int N, L;
    cin >> N >> L;

    for (int j = L; j <= 100; j++)
    {
        int t = ((j - 1)*j) / 2;
        int x = (N - t) / j;
        int x_mod = (N - t) % j;
        if (x >= 0 && x_mod == 0)
        {
            for (int i = 0; i < j; i++)
            {
                cout << i + x << " ";
            }cout << endl;
            return 0;
        }
    }
    cout << -1 << endl;
}

댓글