Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define endl "\n"
- const ll MOD = 998244353;
- ll fastPow(ll pow, ll val)
- {
- ll res = 1;
- if (pow <= 0) return res;
- res = fastPow(pow/2,val);
- if (pow % 2 == 0) return res * res % MOD;
- return res * res % MOD * val % MOD;
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- ll n,m;
- cin>>n>>m;
- vector <ll> dob(n - 2, 1);
- for (ll i = 1; i <= n - 3; i++)
- {
- dob[i] = dob[i - 1] * 2 % MOD;
- }
- ll ans = dob[n - 3]; // 2^(n-3)
- vector <ll> a(max(n, m + 1),1); //factorials
- for (ll i = 1; i < max(n, m + 1); i++)
- {
- a[i] = a[i - 1] * i % MOD;
- }
- cout<<a[m]<<endl; //m!
- ll ans1 = a[m - n + 1]; //(m-n+1)!
- cout<<ans1<<endl;
- ll ans2 = a[n - 1]; //(n-1)!
- cout<<ans2<<endl;
- cout<<fastPow(MOD - 2,ans1)<<endl;
- ans = ans * (n - 2) % MOD * fastPow(MOD - 2,ans1) % MOD * fastPow(MOD - 2,ans2) % MOD;
- cout<<ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement