작성일 :

문제 링크

29895번 - Jõululaul

설명

크리스마스 기간 동안 상대방이 보내는 다양한 선물의 총 개수를 계산하는 문제입니다.

크리스마스 기간이 N 일 동안 지속될 때, 각기 다른 N 가지의 선물이 존재합니다.

또한, 크리스마스 기간 중 임의의 k 번째 날에는 선물 A_11 개, 선물 A_2 를 2개, ... , 선물 A_kk 개 받습니다.



따라서, 임의의 k 번째 날에 받는 k 번째 선물은 k 개를 받으며,

이후 k 번째 날 부터 크리스마스가 끝나는 N 번째 날 까지, 즉, N - K + 1 번 동안, 매일 한 번씩 선물을 받게 됩니다.


예를 들어, 크리스마스 기간이 총 5 일이고, k = 2 일 경우, 2 번째 선물을 2 번째 날부터 5 번째 날까지,

매일 2 개씩, 총 4 일 동안 받게 됩니다.


이를 일반화하면, k 번째 선물은 N - k + 1 일 동안, 매일 k 씩 받게 되는 것이므로,

받게 되는 k 번째 선물의 총 개수는 다음과 같이 계산할 수 있습니다.


k번째 선물의 총 개수 = (N - k + 1) X k




Code

[ C# ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var n = long.Parse(Console.ReadLine()!);

      StringBuilder sb = new StringBuilder();
      Enumerable.Range(1, (int)n)
        .Select(k => (long)k * (n - k  + 1))
        .ToList()
        .ForEach(res => sb.AppendLine(res.ToString()));
      Console.Write(sb.ToString());

    }
  }
}



[ C++ ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  ll n; cin >> n;

  for (ll k = 1; k <= n; k++)
    cout << (n - k + 1) * k << "\n";

  return 0;
}