数据有误?
查看原帖
数据有误?
906900
MsgNotFound楼主2024/8/20 11:46

rt,本人两个代码:

#include<iostream>
using namespace std;
typedef long long ll;
ll t,n,m,p;
ll ksm(ll a,ll b,ll mod){
	ll ans=1;
	while(b){
		if(b&1)ans=ans*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return ans;
}
ll C(ll a,ll b,ll mod){
	if(a==b)return 1;
	b=min(b,a-b);
	ll jc=1,jc_b=1;
	for(int i=a-b+1;i<=a;i++)jc=jc*i%mod;
	for(int i=2;i<=b;i++)jc_b=jc_b*i%mod;
	return jc*ksm(jc_b,mod-2,mod)%mod;
}
ll L(ll a,ll b,ll mod){
	ll ans=1;
	while(a&&b){
		ans=ans*C(a%mod,b%mod,mod)%mod;
		a/=mod;
		b/=mod;
	}
	return ans;
} 
int main(){
	cin>>t;
	while(t--){
		cin>>n>>m>>p;
		cout<<L(n+m,n,p)<<endl;
	}
	return 0;
}

和

#include<iostream>
using namespace std;
typedef long long ll;
ll t,n,m,p;
inline ll ksm(ll a,ll b,ll mod){
	ll ans=1;
	while(b){
		if(b&1)ans=ans*a%mod;
		a=a*a%mod;
		b>>=1; 
	}
	return ans;
}
ll C(ll a,ll b,ll mod){
	if(a==b)return 1;
	b=min(b,a-b);
	ll jc=1,jc_b=1;
	for(int i=a-b+1;i<=a;i++)jc=jc*i%mod;
	for(int i=2;i<=b;i++)jc_b=jc_b*i%mod;
	return jc*ksm(jc_b,mod-2,mod)%mod;
}
ll lucas(ll a,ll b,ll mod){
	ll ans=1;
	while(a&&b){
		ans=ans*C(a%mod,b%mod,mod)%mod;
		a/=mod;
		b/=mod;
	}
	return ans;
}
int main(){
	cin>>t;
	while(t--){
		cin>>n>>m>>p;
		cout<<lucas(n+m,n,p)<<endl;
	}
	return 0;
}

这两个代码测试第一个点最后一个数据时结果一样,但是提交却全WA。

18716 19718 5393

这组数据在下载数据中输出为0,但是经过三个代码测试后都为35,输出为0是因为组合数刚好为P(质数),但是组合数不可能为质数,申请更改。

2024/8/20 11:46
加载中...