안녕하세요. 오늘은 파스칼의 삼각형에서 합을 구해볼 거예요.
https://www.acmicpc.net/problem/15489
이 삼각형을 정삼각형이 아닌 직각삼각형으로 생각해봅시다.
모든 수들을 왼쪽으로 쭉 밀면 그렇게 됩니다.
이러면 좌표를 매기기도 쉬워지므로 그냥 하면 됩니다.
R<=i<R+w이고 C<=j<=C+(i-R)이면 그 값을 더해주면 됩니다.
#include <iostream>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll tri[33][33] = { 0 }, R, C, W, i, j, sum = 0;
tri[0][0] = 1;
cin >> R >> C >> W;
for (i = 1; i <= R + W - 1; i++)
{
for (j = 1; j <= i; j++)
{
tri[i][j] = tri[i - 1][j - 1] + tri[i - 1][j];
if (R <= i && i < R + W)
{
if (C <= j && j <= C + (i - R))
{
sum += tri[i][j];
}
}
}
}
cout << sum;
}
감사합니다.