結果
問題 |
No.1126 SUM
|
ユーザー |
![]() |
提出日時 | 2020-07-24 23:52:51 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 1,000 ms |
コード長 | 816 bytes |
コンパイル時間 | 835 ms |
コンパイル使用メモリ | 90,072 KB |
最終ジャッジ日時 | 2025-01-12 05:11:43 |
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 26 |
ソースコード
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> using namespace std; using ll = long long; constexpr int P = 1000000007; ll modinv(int n) { int m = P, y = 0, v = 1; while (1) { int q = m / n; int r = m % n; if (r == 0) return v < 0 ? v + P : v; y -= v * q; swap(y, v); m = n; n = r; } } int comb(int n, int k) { if (n < k || k < 0) return 0; ll t = 1; k = min(k, n - k); for (int i = 2; i <= k; i++) { t = (t * i) % P; } t = modinv(t); for (int i = n - k + 1; i <= n; i++) { t = (t * i) % P; } return t; } int main() { int n, m; cin >> n >> m; cout << comb(m + 1, n + 1) << endl; return 0; }