QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#374905 | #8329. Excuse | ucup-team228 | WA | 1ms | 3816kb | C++20 | 4.1kb | 2024-04-02 19:26:32 | 2024-04-02 19:26:34 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string to_string(string a) { return '"' + a + '"'; }
string to_string(char a) { return "'" + string(1, a) + "'"; }
string to_string(const char* a) { return to_string((string) a); }
string to_string(bool a) { return a ? "true" : "false"; }
template <class T1, class T2>
string to_string(pair<T1, T2> a) {
return "(" + to_string(a.first) + ", " + to_string(a.second) + ")";
}
template <class T>
string to_string(T a) {
bool first = true; string res = "{";
for (const auto& i : a) {
if (!first) res += ", ";
first = false;
res += to_string(i);
}
res += "}";
return res;
}
void debug_out() { cerr << endl; }
template <class T1, class... T2>
void debug_out(T1 a, T2... b) {
cerr << " " << to_string(a);
debug_out(b...);
}
#ifdef LOCAL
#define out(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define out(...) 42
#endif
void Solve();
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#endif
Solve();
#ifdef LOCAL
cout << "\nTime elapsed: " << double(clock()) / CLOCKS_PER_SEC << " s.\n";
#endif
}
template <int m>
struct mint {
int x = 0;
mint(int64_t a = 0) { if (a < 0) a = a % m + m; if (a >= m) a %= m; x = a; }
friend istream& operator>>(istream& in, mint& a) { int64_t y; in >> y; a = y; return in; }
friend ostream& operator<<(ostream& out, mint a) { return out << a.x; }
explicit operator int() const { return x; }
static int mod_inv(int a, int mod = m) {
int g = mod, r = a, z = 0, y = 1;
while (r != 0) { int q = g / r; g %= r; swap(g, r); z -= q * y; swap(z, y); }
return z < 0 ? z + mod : z;
}
mint inv() const { return mod_inv(x, m); }
friend mint binpow(mint a, int64_t b) { mint res = 1; while (b) { if (b & 1) res *= a; b >>= 1; a *= a; } return res; }
mint pow(int64_t b) const { return binpow(*this, b); }
mint operator-() const { return x ? m - x : 0; }
mint& operator+=(const mint& a) { x += a.x; if (x >= m) x -= m; return *this; }
mint& operator-=(const mint& a) { x -= a.x; if (x < 0) x += m; return *this; }
static unsigned fast_mod(uint64_t x, unsigned mod = m) {
#if defined(_WIN32) && !defined(_WIN64)
// Optimized mod for Codeforces 32-bit machines.
// x must be less than 2^32 * mod for this to work, so that x / mod fits in a 32-bit integer.
unsigned x_high = x >> 32, x_low = (unsigned) x; unsigned quot, rem;
asm("divl %4\n" : "=a" (quot), "=d" (rem) : "d" (x_high), "a" (x_low), "r" (mod));
return rem;
#else
return x % mod;
#endif
}
mint& operator*=(const mint& a) { x = fast_mod((uint64_t) x * a.x); return *this; }
mint& operator/=(const mint& a) { return *this *= a.inv(); }
friend mint operator+(mint a, const mint& b) { return a += b; }
friend mint operator-(mint a, const mint& b) { return a -= b; }
friend mint operator*(mint a, const mint& b) { return a *= b; }
friend mint operator/(mint a, const mint& b) { return a /= b; }
mint& operator++() { x = x == m - 1 ? 0 : x + 1; return *this; }
mint& operator--() { x = x == 0 ? m - 1 : x - 1; return *this; }
mint operator++(int) { mint a = *this; ++*this; return a; }
mint operator--(int) { mint a = *this; --*this; return a; }
bool operator==(const mint& a) const { return x == a.x; }
bool operator!=(const mint& a) const { return x != a.x; }
};
const int mod = 998244353;
#define mi mint<mod>
mi sol(int n) {
mi res = 0;
for (int t = 0; t <= n; t++) {
mi sum = 0;
for (int i = 1; i < (1 << (t + 1)); i += 2) {
mi cur = mi(i).pow(n);
int deg = t - __builtin_popcount(i) + 1;
if (deg & 1) {
sum -= cur;
}
else {
sum += cur;
}
}
res += mi(t) * sum / mi(2).pow(t + 1);
}
return res;
}
void Solve() {
int n;
cin >> n;
cout << sol(n) << "\n";
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3816kb
input:
1
output:
499122177
result:
ok 1 number(s): "499122177"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3584kb
input:
3
output:
499122303
result:
wrong answer 1st numbers differ - expected: '561512450', found: '499122303'