Submission #13084560
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef vector<int> vi; typedef vector<ll> vl;
typedef vector<vi> vvi; typedef vector<vl> vvl;
typedef pair<int, int> pii; typedef pair<ll, ll> pll;
typedef vector<pii> vii; typedef vector<pll> vll;
typedef map<int,int> mii;
typedef vector<char> vc;
typedef vector<bool> vb;
#define endl '\n'
#define forn(i,n) for(int i=0;i<n;i++)
#define rforn(i,n) for(int i=n-1;i>=0;i--)
#define forne(i,n) for(int i=1;i<=n;i++)
#define rforne(i,n) for(int i=n;i>=1;i--)
#define forse(i,s,e) for(int i=s;i<e;i++)
#define rforse(i,s,e) for(int i=e-1;i>=s;i--)
#define all(x) x.begin(),x.end()
#define sz(x) (ll)x.size()
#define MOD 998244353
#define F first
#define S second
#define pb push_back
#define in insert
#define mp(a, b) make_pair(a, b)
#define fill(a,x) memset(a,x,sizeof a);
#define trav(a,x) for(auto &a:x)
#define min3(a, b, c) min(min(a, b), c)
#define min4(a, b, c, d) min(min(a, b), min(c, d))
#define max3(a, b, c) max(max(a, b), c)
#define max4(a, b, c, d) max(max(a, b), max(c, d))
#define INF INT_MAX
#ifdef KARAN
#include "../../trace.h"
#else
#define trace(args...)
#endif
ll modpow(ll a, ll b, ll m = MOD){a %= m; ll res = 1;
while (b) {if (b & 1)res = (res * a) % m; a = (a * a) % m; b >>= 1;} return res;}
ll bpow(ll a, ll b){ll res = 1; while (b) {if (b & 1)res = res * a; a = a * a; b >>= 1;} return res;}
ll modinv(ll a, ll m = MOD) {return modpow(a, m - 2, m);}
void graph(vvi &adj, int m) {int x, y; forn(i, m){cin>>x>>y; adj[--x].pb(--y); adj[y].pb(x);}}
vl f;
vl invf;
ll MAXVAL = 2*(1e5)+100;
void init(){
f.resize(MAXVAL, 1);
invf.resize(MAXVAL, 1);
forne(i, MAXVAL-1) f[i] = (f[i-1]*i)%MOD;
forne(i, MAXVAL-1) invf[i] = modinv(f[i]);
}
ll ncr(ll n, ll r){
return invf[n-r] * ( f[n] * invf[r] % MOD ) % MOD;
}
void solve(){
ll n, m, k;
cin>>n>>m>>k;
ll answer = 0;
forn(i, k+1){
ll factor = (m*modpow(m-1, n-i-1))%MOD;
answer = answer + (factor*ncr(n-1, i))%MOD;
answer %= MOD;
}
cout<<answer<<endl;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#ifdef KARAN
freopen("inp.txt", "r", stdin);
freopen("out.txt", "w", stdout);
freopen("err.txt", "w", stderr);
#endif
init();
int t=1;
while(t--)
solve();
}
Submission Info
| Submission Time |
|
| Task |
E - Colorful Blocks |
| User |
karanagarwalla |
| Language |
C++ (GCC 9.2.1) |
| Score |
500 |
| Code Size |
2376 Byte |
| Status |
AC |
| Exec Time |
48 ms |
| Memory |
6232 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
500 / 500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00-Sample-00, 00-Sample-01, 00-Sample-02 |
| All |
00-Sample-00, 00-Sample-01, 00-Sample-02, 01-Handmade-00, 01-Handmade-01, 01-Handmade-02, 01-Handmade-03, 01-Handmade-04, 01-Handmade-05, 01-Handmade-06, 01-Handmade-07, 01-Handmade-08, 01-Handmade-09, 02-Random-00, 02-Random-01, 02-Random-02, 02-Random-03, 02-Random-04, 02-Random-05, 02-Random-06, 02-Random-07, 02-Random-08, 02-Random-09, 02-Random-10, 02-Random-11, 02-Random-12, 02-Random-13, 02-Random-14, 02-Random-15, 02-Random-16, 02-Random-17, 02-Random-18, 02-Random-19, 02-Random-20, 02-Random-21, 02-Random-22, 02-Random-23, 02-Random-24, 02-Random-25, 02-Random-26, 02-Random-27, 02-Random-28, 02-Random-29 |
| Case Name |
Status |
Exec Time |
Memory |
| 00-Sample-00 |
AC |
37 ms |
6084 KiB |
| 00-Sample-01 |
AC |
31 ms |
6124 KiB |
| 00-Sample-02 |
AC |
32 ms |
6188 KiB |
| 01-Handmade-00 |
AC |
33 ms |
6232 KiB |
| 01-Handmade-01 |
AC |
32 ms |
6104 KiB |
| 01-Handmade-02 |
AC |
34 ms |
6232 KiB |
| 01-Handmade-03 |
AC |
31 ms |
6232 KiB |
| 01-Handmade-04 |
AC |
29 ms |
6136 KiB |
| 01-Handmade-05 |
AC |
48 ms |
6104 KiB |
| 01-Handmade-06 |
AC |
31 ms |
6212 KiB |
| 01-Handmade-07 |
AC |
48 ms |
6104 KiB |
| 01-Handmade-08 |
AC |
40 ms |
6228 KiB |
| 01-Handmade-09 |
AC |
32 ms |
6124 KiB |
| 02-Random-00 |
AC |
32 ms |
6092 KiB |
| 02-Random-01 |
AC |
34 ms |
6232 KiB |
| 02-Random-02 |
AC |
30 ms |
6232 KiB |
| 02-Random-03 |
AC |
29 ms |
6232 KiB |
| 02-Random-04 |
AC |
35 ms |
6188 KiB |
| 02-Random-05 |
AC |
31 ms |
6088 KiB |
| 02-Random-06 |
AC |
31 ms |
6132 KiB |
| 02-Random-07 |
AC |
31 ms |
6192 KiB |
| 02-Random-08 |
AC |
34 ms |
6176 KiB |
| 02-Random-09 |
AC |
29 ms |
6228 KiB |
| 02-Random-10 |
AC |
34 ms |
6192 KiB |
| 02-Random-11 |
AC |
36 ms |
6192 KiB |
| 02-Random-12 |
AC |
32 ms |
6232 KiB |
| 02-Random-13 |
AC |
31 ms |
6124 KiB |
| 02-Random-14 |
AC |
31 ms |
6104 KiB |
| 02-Random-15 |
AC |
33 ms |
6088 KiB |
| 02-Random-16 |
AC |
31 ms |
6232 KiB |
| 02-Random-17 |
AC |
35 ms |
6124 KiB |
| 02-Random-18 |
AC |
38 ms |
6100 KiB |
| 02-Random-19 |
AC |
40 ms |
6208 KiB |
| 02-Random-20 |
AC |
33 ms |
6188 KiB |
| 02-Random-21 |
AC |
32 ms |
6192 KiB |
| 02-Random-22 |
AC |
42 ms |
6100 KiB |
| 02-Random-23 |
AC |
41 ms |
6216 KiB |
| 02-Random-24 |
AC |
34 ms |
6212 KiB |
| 02-Random-25 |
AC |
38 ms |
6212 KiB |
| 02-Random-26 |
AC |
32 ms |
6136 KiB |
| 02-Random-27 |
AC |
40 ms |
6192 KiB |
| 02-Random-28 |
AC |
34 ms |
6192 KiB |
| 02-Random-29 |
AC |
32 ms |
6196 KiB |