結果
問題 | No.834 Random Walk Trip |
ユーザー |
![]() |
提出日時 | 2019-06-29 00:09:29 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 174 ms / 2,000 ms |
コード長 | 1,833 bytes |
コンパイル時間 | 1,121 ms |
コンパイル使用メモリ | 109,444 KB |
最終ジャッジ日時 | 2025-01-07 05:38:11 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 26 |
ソースコード
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <deque>#include <queue>#include <array>#include <set>#include <map>#include <cmath>#include <algorithm>#include <numeric>#include <cassert>#include <utility>#include <tuple>#include <functional>#include <bitset>#include <cstdint>using namespace std;using i64 = int64_t;using i32 = int32_t;template<class T, class U> void init_n(vector<T>& v, size_t n, U x){ v = vector<T>(n, x); }template<class T> void init_n(vector<T>& v, size_t n) { init_n(v, n, T()); }template<class T> void read_n(vector<T>& v, size_t n, size_t o = 0){ v = vector<T>(n+o); for (size_t i=o; i<n+o; ++i) cin >> v[i]; }template<class T> void read_n(T a[], size_t n, size_t o = 0){ for (size_t i=o; i<n+o; ++i) cin >> a[i]; }template<class T> T gabs(const T& x) { return max(x, -x); }#define abs gabsconst i64 mod = 1e9 + 7;i64 fact_memo[1000001];i64 fact(i64 x) {if (x == 0) return 1;if (fact_memo[x]) return fact_memo[x];return fact_memo[x] = x * fact(x - 1) % mod;}i64 ipow(i64 a, i64 b) {return (b & 1 ? a : 1) * (b > 1 ? ipow(a * a % mod, b >> 1) : 1) % mod;}i64 fact_inv(i64 x) {return ipow(fact(x), mod - 2);}i64 perm(i64 a, i64 b) {return fact(a) * fact_inv(a - b) % mod;}i64 conb(i64 a, i64 b) {return fact(a) * fact_inv(b) % mod * fact_inv(a - b) % mod;}i64 n, m;int main() {cin >> n >> m;if (n == 1) {cout << 1 << '\n';return 0;}i64 ans = conb(m, m / 2);for (i64 i = 2 * n - 1; i <= m; i += 2 * n) {i64 j = i + 1, k = i + 2;if (i <= m && i % 2 == m % 2) ans += conb(m, (m - i) / 2);if (j <= m && j % 2 == m % 2) ans += 2 * conb(m, (m - j) / 2);if (k <= m && k % 2 == m % 2) ans += conb(m, (m - k) / 2);ans %= mod;}cout << ans << '\n';return 0;}