문제
라스칼의 삼각형은 파스칼의 삼각형과 비슷하다.
라스칼의 삼각형에서 가장 윗 줄은 0번 줄이다. i번째 줄에는 i+1개의 숫자가 들어있고, 차례대로 0번부터 i번이다. R(i, j)는 i번 줄의 j번째 숫자이다.
R(n, m) = 0 (n <0 or m <0 or m> n)
각 줄의 첫 번째와 마지막 숫자는 1이다.
R(n,0) = R(n, n) = 1
나머지 값을 채우는 방법은 (서쪽 값 * 동쪽 값 + 1) / 북쪽 값이다.
이것을 수식으로 표현해보면 R(n+1, m+1) = (R(n, m) * R(n, m+1) + 1) / R(n-1, m)이다.
라스칼의 삼각형에서 R(n, m)을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T(1 <= T <= 1,000)이 주어진다. 각 테스트 케이스는 2개의 숫자 n과 m으로 이루어져 있다. (0 <= m <= n <= 50,000)
출력
각 테스트 케이스에 대해서 한 줄에 하나씩 R(n,m)을 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <iostream>
using namespace std;
int main() {
int t;
long long n, m;
cin >> t;
for (int i = 0; i < t; i++) {
cin >> n >> m;
cout << 1 + (n - m) * m << '\n';
}
return 0;
}
|
cs |
한 5줄 정도 적어보니까 공식이 보였다.
'백준 온라인 저지 (BOJ) 문제풀이' 카테고리의 다른 글
백준 온라인 저지 1038 감소하는 수 (0) | 2020.12.09 |
---|---|
백준 온라인 저지 5958 Space Exploration (0) | 2020.12.07 |
백준 온라인 저지 1406 에디터 (0) | 2020.12.07 |
백준 온라인 저지 18870 좌표 압축 (0) | 2020.12.02 |
백준 온라인 저지 14698 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) (0) | 2020.12.02 |