intmain(){ int q; cin >> q; while (q--) { ll a, b, x, y; cin >> x >> y >> a >> b;
ll ans = 0; if (a * 2 >= b) { int t = min(y, x); x -= t, y -= t; ans = t * b + (x + y) * a; } else ans = (x + y) * a; cout << ans << endl; } return0; }
ll calc(ll x){ ll ret = x / g * (g - b); ret += max(0ll, x % g - b + 1); return ret; }
intmain(){ int q; cin >> q; while (q--) { int t; cin >> a >> b >> t; if (a > b) swap(a, b); g = a * b / __gcd(a, b); while (t--) { ll l, r; cin >> l >> r; cout << calc(r) - calc(l - 1) << ' '; } cout << endl; } return0; }
#include <bits/stdc++.h> using namespace std; typedef long long ll; const intmod = 998244353; const intN = 5e5 + 5;
ll qpow(ll a, ll b) { ll ret = 1; while (b) { if (b & 1) ret = ret * a % mod; a = a * a % mod; b >>= 1; } return ret; }
ll fac[N], inv[N];
int main() { fac[0] = 1; for (int i = 1; i < N; ++i) fac[i] = fac[i - 1] * i % mod; inv[N - 1] = qpow(fac[N - 1], mod - 2); for (int i = N - 2; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % mod; auto C = [&](intn, int m) { if (m < 0 | m > n) return 0ll; return fac[n] * inv[m] % mod * inv[n - m] % mod; };
intn; ll k; cin >> n >> k; if (k >= n) cout << 0 << endl; else if (k == 0) cout << fac[n] << endl; else { ll ans = 0; for (int i = 0; i <= n - k; ++i) { ll t = C(n - k, i) * qpow(n - k - i, n); if (i & 1) ans = (ans - t) % mod; else ans = (ans + t) % mod; } if (ans < mod) ans += mod; ans = ans * inv[n - k] % mod; ans = 2 * ans * C(n, n - k) % mod * fac[n - k] % mod; cout << ans << endl; } return 0; }