PKU 1306 Combinations
int main() { ll dp[128][128]; memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for (int n = 1; n < 128; ++n) { for (int m = 0; m < 128; ++m) { if (m) { dp[n][m] += dp[n - 1][m - 1]; } dp[n][m] += dp[n - 1][m]; } } for (int N, M; cin >> N >> M && (N || M); ) { printf("%d things taken %d at a time is %lld exactly.\n", N, M, dp[N][M]); } }