연속된 숫자이기 때문에 등차 수열로 접근을 시작하였다.
18의 숫자를 적어도 2 이상의 숫자를 사용한다고 가정하였을 때
x + (x+1) = 18
2x + 1 = 18
2x = 17
x = 17/2
정수가 아니기 때문에 두개로는 18을 만들 수 없다.
그렇다면 갯수 1을 증가시켜 3 이상의 숫자를 사용한다면
x + (x+1) + (x+2) = 18
3x + 3 = 18
3x = 15
x = 5
정수로 나누어 떨어졌기 때문에 x가 5라는 것을 알 수 있고
3개를 사용했기 때문에5 6 7
을 출력하면 된다.
나는 여기서 멈추지 않고 계속 진행해보았다.
그러자 이러한 결과를 도출해낼 수 있었다.
-1
을 출력-1
을 출력이 문제는 등차수열로 접근한다면 쉽게 풀 수 있는 문제였던 것 같다.
using System.Text;
namespace BOJ_16918
{
class Program
{
static void Main()
{
using StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
using StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
int[] inputs = sr.ReadLine().Split().Select(int.Parse).ToArray();
int N = inputs[0];
int L = inputs[1];
while (true)
{
int G = N - ((L - 1) * L) / 2;
var Gx = G / L;
var Rx = G % L;
if (Gx < 0 || L > 100)
{
sb.Append("-1");
break;
}
if (Rx != 0)
{
L++;
}
else
{
for (int i = (int)Gx; i < (int)Gx + L; i++)
{
sb.Append($"{i} ");
}
break;
}
}
sw.Write(sb);
}
}
}
수학