luoguP2265 路边的水沟

时间:2023-03-09 02:28:06
luoguP2265 路边的水沟

题目:http://www.luogu.org/problem/show?pid=2265

题解:ans=C(n+m,n)%p

求一下逆元就行

代码;

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<algorithm>
#include<queue>
#define for0(i,n) for(int i=0;i<=n;i++)
#define for1(i,n) for(int i=1;i<=n;i++)
#define for2(i,x,y) for(int i=(x);i<=(y);i++)
#define for3(i,y,x) for(int i=(y);i>=(x);i--)
#define maxn 100000+5
#define mod 1000000007
#define ll long long
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
return x*f;
}
ll power(ll x,ll y)
{
ll t=;
for(;y;y>>=,x=(x*x)%mod)
if(y&)t=(t*x)%mod;
return t;
}
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
ll n=read(),m=read();
ll t1=,t2=;
for1(i,n)t1=(t1*(ll)i)%mod;
for2(i,m+,n+m)t2=(t2*(ll)i)%mod;
printf("%lld\n",t2*power(t1,mod-)%mod);
return ;
}