fork download
  1. #include<bits/stdc++.h>
  2.  
  3. #define INF 1000010000
  4. #define nl '\n'
  5. #define pb push_back
  6. #define ppb pop_back
  7. #define mp make_pair
  8. #define fi first
  9. #define se second
  10. #define pii pair<int,int>
  11. #define pdd pair<double,double>
  12. #define all(c) (c).begin(), (c).end()
  13. #define SORT(c) sort(all(c))
  14. #define sz(c) (c).size()
  15. #define rep(i,n) for( int i = 0; i < n; ++i )
  16. #define repi(i,n) for( int i = 1 ; i <= n; ++i )
  17. #define repn(i,n) for( int i = n - 1 ; i >= 0 ; --i )
  18. #define repf(j,i,n) for( int j = i ; j < n ; ++j )
  19. #define die(s) {std::cout << s << nl;}
  20. #define dier(s) {std::cout << s; return 0;}
  21. #define vi vector<int>
  22. typedef long long ll;
  23. #define MOD 1000000007
  24. using namespace std;
  25.  
  26.  
  27. ll solve1(int n , int m){
  28. int p = 0;
  29. ll ans = 1;
  30. if(m > n)return 0;
  31. int l = n + m;
  32. rep(i , l){
  33. if(p == 0 && n > 0){
  34. ans = (ans * n) % MOD;
  35. p ^= 1;
  36. --n;
  37. }else if(p == 1 && m > 0){
  38. ans = (ans * m) % MOD;
  39. p ^= 1;
  40. --m;
  41. }else{
  42. return 0;
  43. }
  44. }
  45. return ans;
  46. }
  47.  
  48. int main() {
  49. ios_base::sync_with_stdio(false);
  50. cin.tie(NULL);
  51. cout.precision(0);
  52.  
  53. int n , m;
  54. cin >> n >> m;
  55.  
  56. ll ans = 0;
  57.  
  58. ans += solve1(n , m) % MOD;
  59. ans += solve1(m , n) % MOD;
  60. ans %= MOD;
  61. while(ans < 0)ans += MOD;
  62. cout << ans;
  63.  
  64.  
  65.  
  66.  
  67. return 0;
  68. }
Success #stdin #stdout 0s 16064KB
stdin
100000 100000
stdout
530123477