#include<bits/stdc++.h> usingnamespace std; using ll = longlong;
intmain(){ int t; cin >> t;
while (t--) { int n, k; cin >> n >> k;
int l = 0, r = n - 1; ll res = 0, sum = 0, cnt = 1; while (l <= r && r - l + 1 >= k) { int m = l + r >> 1; if ((r - l + 1) % 2 == 0) { r = m; } else { res += sum + cnt * (m - l + 1); r = m - 1; } sum = 2 * sum + cnt * (m - l + 1); cnt <<= 1; } cout << res << endl; }
#include<bits/stdc++.h> usingnamespace std; using ll = longlong; constexprint mod = 998244353;
ll qpow(ll a, ll n){ ll res = 1; while (n) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res; }
ll inv(ll n){ returnqpow(n, mod - 2); }
intmain(){ int t; cin >> t;
while (t--) { int n, q; cin >> n >> q;
vector a(2, vector<int>(n)); for (int o = 0; o < 2; o++) { for (int i = 0; i < n; i++) { cin >> a[o][i]; } }
auto aa = a; sort(aa[0].begin(), aa[0].end()); sort(aa[1].begin(), aa[1].end());
ll res = 1; for (int i = 0; i < n; i++) { res = res * min(aa[0][i], aa[1][i]) % mod; }
cout << res << " "; while (q--) { int o, i; cin >> o >> i; o--, i--;
int p = upper_bound(aa[o].begin(), aa[o].end(), a[o][i]) - aa[o].begin() - 1; res = res * inv(min(aa[o][p], aa[!o][p])) % mod; aa[o][p]++; a[o][i]++; res = res * min(aa[o][p], aa[!o][p]) % mod;
#include<bits/stdc++.h> usingnamespace std; using ll = longlong;
intmain(){ int t; cin >> t;
while (t--) { int n; cin >> n;
vector<vector<int>> E(n); for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; u--, v--; E[u].push_back(v); E[v].push_back(u); }
vector<int> op(n); for (int u = 0; u < n; u++) { op[u] = E[u].size() == 1; } for (int u = 0; u < n; u++) { if (op[u] == 1) continue; for (auto v : E[u]) { if (op[v] == 1) { op[u] = 2; } } }
int sum[3]{}; for (int u = 0; u < n; u++) { sum[op[u]]++; }
ll res = 0; vector<int> dp(n); auto dfs = [&](thisauto&& self, int u, int p) -> void { if (op[u] == 0) dp[u] = 1; for (auto v : E[u]) { if (v == p) continue; self(v, u); dp[u] += dp[v]; }
if (op[u] != 2) return;
ll sum1 = 0, sum2 = 0; for (auto v : E[u]) { int t; // Change-Root dp if (v == p) { t = sum[0] - dp[u]; } else { t = dp[v]; } res -= 1LL * t * (op[v] != 1); sum1 += t; sum2 += (op[v] != 1); } res += 1LL * sum1 * sum2; }; dfs(0, -1);
res += 1LL * sum[1] * (n - sum[1]); cout << res << endl; }