萌新不会OI,Lucas求助
查看原帖
萌新不会OI,Lucas求助
263414
Sktic楼主2022/8/25 11:56
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
ll mod;
ll qpow(ll x,ll p)
{
	ll ans=1;
	while(p)
	{
		if(p&1)
			ans=(ans%mod*x%mod)%mod;
		x=(x%mod*x%mod)*mod;
		p>>=1;
	}
	return ans;
}
ll C(ll n,ll m)
{
	if(m>n)
		return 0;
	m=((m>n-m)?(n-m):m);
	ll fz=1,fm=1;
	for(ll i=0;i<m;i++)
	{
		fz=(fz*ll(n-i))%mod;
		fm=(fm*ll(i+1))%mod; 
	}
	return fz%mod*qpow(fm,mod-2)%mod;
}
ll Lucas(ll n,ll m)
{
	if(n<mod&&m<mod)
		return C(n,m)%mod;
	return Lucas(n/mod,m/mod)*C(n%mod,m%mod)%mod; 
}
int main()
{
	ios::sync_with_stdio(false);
	ll t;
	cin>>t;
	while(t--)
	{
		ll n,m;
		cin>>n>>m>>mod;
		cout<<Lucas(n+m,n)%mod<<endl;
	}
	return 0;
}

一直输出0.jpg

有没有大佬帮忙调一下QAQ

2022/8/25 11:56
加载中...