結果
問題 | No.2130 分配方法の数え上げ mod 998244353 |
ユーザー |
![]() |
提出日時 | 2022-11-25 21:49:50 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,038 bytes |
コンパイル時間 | 4,033 ms |
コンパイル使用メモリ | 252,896 KB |
最終ジャッジ日時 | 2025-02-09 00:09:22 |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 16 WA * 22 |
ソースコード
#include <bits/stdc++.h> using namespace std; #if __has_include(<atcoder/all>) #include <atcoder/all> using namespace atcoder; #endif template<class T, class... Ts> void print(const T& a, const Ts&... b){cout << a;(cout << ... << (cout << ' ', b));cout << '\n';} template<class... T> void input(T&... a){(cin >> ... >> a);} void print(){cout << '\n';} typedef long long ll; typedef long double ld; typedef pair<ll, ll> P; typedef tuple<ll, ll, ll> T; typedef modint998244353 mint; #define rep(i, n) for(ll i = 0; i < n; i++) int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); ll n,m; input(n,m); if(n < m)return print(0),0; vector<mint> r(100,0); r[0] = 1; r[1] = 2; for(int i=2;i<=100;i++)r[i] = r[i-1]*r[i-1]; ll cnt = 1; mint t1 = 1,t2 = 1; while(n){ if(n & 1)t1 *= r[cnt]; n >>= 1; cnt++; } m--; cnt = 1; while(m){ if(m & 1)t2 *= r[cnt]; m >>= 1; cnt++; } print((t1-t2).val()); return 0; }