Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. static inline ll powmod(unsigned a, unsigned b){
  2. register ll x=1,y=a;
  3. while(b){
  4. if(b&1){
  5. x*=y; if(x>=MOD)x%=MOD;
  6. }
  7. y*=y; if(y>=MOD)y%=MOD;
  8. b>>=1;
  9. }
  10. return x;
  11. }
  12.  
  13. static inline ll InverseMod(ll n){
  14. return powmod(n,MOD-2);
  15. }
  16.  
  17. static inline ll prodMod(ll minx,ll maxx){
  18. for(unsigned i=minx+1; i<=maxx; i++){
  19. minx*=i; if(minx>=MOD)minx%=MOD;
  20. }
  21. return minx;
  22. }
  23.  
  24. static inline ll factMOD(unsigned n){
  25. register ll ans0=1,ans1=1;register unsigned i,m;
  26. for(i=1,m=(n+1)>>1; i<m; i++){
  27. ans0*=(i<<1); if(ans0>=MOD)ans0%=MOD;
  28. ans1*=((i<<1)+1); if(ans1>=MOD)ans1%=MOD;
  29. }
  30. return ans0*ans1%MOD;
  31. }
  32.  
  33. static inline ll chemin(ll x, ll y){
  34. return (prodMod(x+1,x+y) *
  35. InverseMod(factMOD(y)))%MOD;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement