fork download
  1. #include <cstdio>
  2. #include <cmath>
  3. #include <iostream>
  4. #include <set>
  5. #include <algorithm>
  6. #include <vector>
  7. #include <map>
  8. #include <cassert>
  9. #include <string>
  10. #include <cstring>
  11. #include <queue>
  12. #include <stack>
  13. using namespace std;
  14. #define test() int t;scanf("%d",&t);for(int tno=1;tno<=t;tno++)
  15. #define mp make_pair
  16. #define pb push_back
  17. #define wl(n) while(n--)
  18. #define fi first
  19. #define se second
  20. #define all(c) c.begin(),c.end()
  21. typedef long long ll;
  22. typedef unsigned long long llu;
  23. typedef vector<int> vi;
  24. typedef pair<int,int> pii;
  25. typedef pair<int,pair<int,int> > piii ;
  26. typedef pair<ll,ll> pll;
  27. typedef pair<ll,int> pli;
  28. #define sz(a) int((a).size())
  29. #define ini(a,v) memset(a,v,sizeof(a))
  30. #define sc(x) scanf("%d",&x)
  31. #define sc2(x,y) scanf("%d%d",&x,&y)
  32. #define sc3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  33. #define scl(x) scanf("%lld",&x)
  34. #define scl2(x,y) scanf("%lld%lld",&x,&y)
  35. #define scl3(x,y,z) scanf("%lld%lld%lld",&x,&y,&z)
  36. #define scs(s) scanf("%s",s);
  37. #define debug() printf("here\n")
  38. #define chk(a) cerr << endl << #a << " : " << a << endl
  39. #define chk2(a,b) cerr << endl << #a << " : " << a << "\t" << #b << " : " << b << endl
  40. #define tr(container, it) for(typeof(container.begin()) it = container.begin(); it != container.end(); it++)
  41. #define inf ((1<<29)-1)
  42. #define linf ((1LL<<60)-1)
  43. const double eps = 1e-9;
  44. const int MAX = 100005;
  45. const ll MOD = 1000000007;
  46. //-----------------------------------------------------------------------------------------------
  47. ll pw(ll base ,ll expo,ll c) {
  48. if(expo == 0 )
  49. return 1 ;
  50. ll f = pw(base , expo /2,c) ;
  51. if(expo&1)
  52. return (((f*f)%c)*base)%c ;
  53. return (f*f)%c;
  54. }
  55.  
  56. ll fact[100005];
  57.  
  58. void pre() {
  59. fact[0] = 1LL;
  60. for(ll i=1; i<100005; i++) {
  61. fact[i] = (i*fact[i-1])%MOD;
  62. }
  63. }
  64.  
  65. ll calc(ll n,ll r){
  66. if(n<r)
  67. return 0;
  68. if(n==0 || n>0&&r==0)
  69. return 0;
  70. ll ret = pw(fact[r]*fact[n-r]%MOD,MOD-2,MOD)%MOD;
  71. return fact[n]*ret%MOD;
  72. }
  73.  
  74. int main() {
  75.  
  76. ll n,m,x;
  77. scl3(n,m,x);
  78.  
  79. pre();
  80.  
  81. ll a = calc(n+m-1, m-1);
  82. x=x-1;
  83. ll b = calc(n+x-1, x-1);
  84.  
  85. ll ans = (a - b + MOD)%MOD;
  86. printf("%lld\n", ans);
  87.  
  88. return 0;
  89. }
Runtime error #stdin #stdout 0.01s 5644KB
stdin
Standard input is empty
stdout
Standard output is empty