提交时间:2024-08-20 20:40:57
运行 ID: 169947
#include <iostream> #include <vector> using namespace std; typedef long long ll; const ll MOD = 1e9+7; ll modpow(ll base, ll exp, ll mod) { ll result = 1; base %= mod; while (exp > 0) { if (exp & 1) result = (result * base) % mod; base = (base * base) % mod; exp >>= 1; } return result; } ll inv(ll num, ll mod) { return modpow(num, mod - 2, mod); } ll nCr(ll n, ll r, ll mod) { ll num = 1, den = 1; for (ll i = 1; i <= r; ++i) { num = (num * (n - i + 1)) % mod; den = (den * i) % mod; } return (num * inv(den, mod)) % mod; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); ll M, N; cin >> M >> N; ll paths = nCr(M + N - 2, min(M - 1, N - 1), MOD); cout << paths; return 0; }