long long C(int N, int M) {
long long sum = 1;
for(int i=1;i<=M; i++) {
sum=sum*(N-M+i)/i;
// sum *= (N-M+i)/i; 切忌這麼寫,會先計算(N-M+i)/i,而這個數可能是0
}
return sum;
}
這段代碼可以防止分子相乘之後越界的情況,有改進歡迎交流!
long long C(int N, int M) {
long long sum = 1;
for(int i=1;i<=M; i++) {
sum=sum*(N-M+i)/i;
// sum *= (N-M+i)/i; 切忌這麼寫,會先計算(N-M+i)/i,而這個數可能是0
}
return sum;
}
這段代碼可以防止分子相乘之後越界的情況,有改進歡迎交流!