同一份代码,不同的结果?
查看原帖
同一份代码,不同的结果?
555833
haozexu楼主2022/8/11 19:23

RT,大佬们看好:

#include<bits/stdc++.h>
using namespace std;
class FLOAT_MOD{
	//实数取模类 
	public:
		long long mod=1;
		inline long long read(){//取模版快读 
			int f=1,x=0;char ch=getchar();
			while(ch>'9'||ch<'0'){
				if(ch=='-') f=-1;ch=getchar();
			}
			while(ch<='9'&&ch>='0'){
				x=x*10%mod+(ch-'0');x%=mod;
				ch=getchar();
			}
			return x*f%mod;
		}
		inline long long fpow(long long d,long long z,long long m)//快速幂 
		{
			long long res=1;
			while(z>0)
			{
				if(z%2!=0) res=res*d%m;
				d=d*d%m;
				z=z/2;
			}
			res%=m;
			return res;
		}	
		inline long long work(long long a,long long b){
			return (a*fpow(b,mod-2,mod)%mod+mod)%mod;
		}
};
class LUCAS{
	public:
	long long p=0;
	FLOAT_MOD mod;
	long long jc[2000000];
	void getjc(){
	    memset(jc,0,sizeof jc);
		jc[0]=1;mod.mod=p;
		for(int i=1;i<=p*10;i++) jc[i]=(jc[i-1]*i)%p;
		return;
	}
	long long C(long long n,long long m){
		return mod.work(jc[n]%p,(jc[m]%p*jc[n-m]%p))%p;
	}
	long long lucas(long long n,long long m){
		if(m==0) return 1;
		return (C(n%p,m%p)%p*lucas(n/p,m/p)%p)%p;
	}
};
int main(){
	LUCAS lucas;
	int t;cin>>t;
	for(int i=1;i<=t;i++){
		long long n,m,p;cin>>n>>m>>p;
		lucas.p=p;
		lucas.getjc();
		cout<<lucas.lucas(n+m,n)<<endl;
	}
}

这是一份丑陋的代码,提交上去却有数种不同结果

有dalao知道是什么原因么

At 2022/8/11 19:11 p.m

2022/8/11 19:23
加载中...