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;
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 고층건물 - 복습(hard) (0) | 2021.02.04 |
---|---|
[백준] 보물 - 복습 (0) | 2021.02.04 |
[백준] 체스판 다시 칠하기 - 복습 (0) | 2021.01.31 |
[백준] 제곱 ㄴㄴ 수 - 복습 (0) | 2021.01.31 |
[백준] - 수열 정렬 - 복습 (0) | 2021.01.31 |
댓글