这是从这个类似问题的解决方案中复制的代码。为什么说 comb(100, 50) 后会失败?我认为它不应该超过long long的限制。如果是这样,我不应该期待运行时错误而不是错误答案。
long long comb(long long n, long long r) {
long long limit = r;
if(r>(n-r))
limit = n-r;
long long sum = 1;
long long i=0;
while(i<limit){
sum *= n-i;
sum /= i+1;
i++;
}
return sum % 1000000007;
}
我期望 100C50 % 1000000007 的正确答案是 538992043(使用帕斯卡三角法计算)而不是 354365244。