Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. #define endl "\n"
  5.  
  6. const ll MOD = 998244353;
  7.  
  8. ll fastPow(ll pow, ll val)
  9. {
  10.     ll res = 1;
  11.     if (pow <= 0) return res;
  12.     res = fastPow(pow/2,val);
  13.     if (pow % 2 == 0) return  res * res % MOD;
  14.     return  res * res % MOD * val % MOD;
  15. }
  16.  
  17. int main()
  18. {
  19.     ios_base::sync_with_stdio(false);
  20.     cin.tie(nullptr);
  21.     cout.tie(nullptr);
  22.     ll n,m;
  23.     cin>>n>>m;
  24.     vector <ll> dob(n - 2, 1);
  25.     for (ll i = 1; i <= n - 3; i++)
  26.     {
  27.         dob[i] = dob[i - 1] * 2 % MOD;
  28.     }
  29.     ll ans = dob[n - 3]; // 2^(n-3)
  30.  
  31.     vector <ll> a(max(n, m + 1),1); //factorials
  32.     for (ll i = 1; i < max(n, m + 1); i++)
  33.     {
  34.         a[i] = a[i - 1] * i  % MOD;
  35.     }
  36.     cout<<a[m]<<endl; //m!
  37.     ll ans1 = a[m - n + 1]; //(m-n+1)!
  38.     cout<<ans1<<endl;
  39.     ll ans2 = a[n - 1]; //(n-1)!
  40.     cout<<ans2<<endl;
  41.     cout<<fastPow(MOD - 2,ans1)<<endl;
  42.     ans = ans * (n - 2) % MOD * fastPow(MOD - 2,ans1) % MOD * fastPow(MOD - 2,ans2) % MOD;
  43.     cout<<ans;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement