有这样一段代码:
long long C(long long a,long long b,long long p){
long long ans=1;
for(long long i=a-b+1;i<=a;++i)ans=ans*i%p;
for(long long i=1;i<=b;++i)ans=ans*qpow(i,p-2,p)%p;
return ans%p;
}
不难看出,结果是 Cabmodp
那这么一段:
long long C(long long a,long long b,long long p){
long long ans=1;
b=a-b;
for(long long i=a-b+1;i<=a;++i)ans=ans*i%p;
for(long long i=1;i<=b;++i)ans=ans*qpow(i,p-2,p)%p;
return ans%p;
}
结果应该一样。
可实际上,它们的运行结果不一样,这是为什么?