求助,为啥这个代码有些数据会算出0
查看原帖
求助,为啥这个代码有些数据会算出0
112012
咸鱼小白楼主2018/10/27 17:39

附上WA代码

#include<bits/stdc++.h>
using namespace std;
int T;
long long n,m,p;
long long ksm(long long x,long long y)
{
    if(y==1) return x;
    long long rst=ksm(x,y/2)%p;
    if(y%2==0)
    {
        return (rst*rst)%p;
    }else
    {
        return ((rst*rst)%p)*x;
    }
}
int main()
{
    cin>>T;
    while(T--)
    {
        scanf("%lld%lld%lld",&n,&m,&p);	
        long long ans=1;
        long long l=n+m;
        for(long long i=n+1;i<=l;i++)
        {
            ans=(ans*i)%p;
        }
        for(long long i=1;i<=m;i++)
        {
            ans=(ans*ksm(i,p-2))%p;
        }
        printf("%lld\n",ans);
    }
    return 0;
}

有些数据会算出0的结果 改用lucas之后就A了

2018/10/27 17:39
加载中...