$O(n+m)$
(0,0) 에서 (x,y)까지 한 칸씩 좌표값이 증가하게 가는 경우의 수는 (x+y)Cx임을 이용한다.
#include<cstdio> int n, m, k, tx, ty; long long dp[31][31]; int c(int x, int y) { int r = 1; for (int i = 1; i <= y; i++) r = r*(x - i + 1) / i; return r; } int main() { scanf("%d %d %d", &n, &m, &k); if (k) tx = (k - 1) / m, ty = (k - 1) % m; printf("%d", c(tx + ty, ty)*c(n + m - 2 - tx - ty, n - 1 - tx)); return 0; }
댓글 없음 :
댓글 쓰기