[백준 29895] Jõululaul (C#, C++) - soo:bak
작성일 :
문제 링크
설명
크리스마스 기간 동안 상대방이 보내는 다양한 선물의 총 개수를 계산하는 문제입니다.
크리스마스 기간이 N
일 동안 지속될 때, 각기 다른 N
가지의 선물이 존재합니다.
또한, 크리스마스 기간 중 임의의 k
번째 날에는 선물 A_1
을 1
개, 선물 A_2
를 2개, ...
, 선물 A_k
를 k
개 받습니다.
따라서, 임의의 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;
}