Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33652 | 沈仲恩 | 【S】set | C++ | 通过 | 100 | 321 MS | 2228 KB | 2424 | 2024-10-18 13:26:33 |
#include <bits/stdc++.h> #define int long long using namespace std; const int mod = 998244353; inline int lb(int x) { return x & (-x); } map <int, __int128_t> mp, lmp; inline int qp(int x, int y) { int res = 1; while (y) { if (y & 1) res = res * x % mod; x = x * x % mod, y >>= 1; } return res; } vector <pair <int, int> > v; // int f[8000000]; inline void write(__int128_t x) { int y = x; printf("%lld", y); } signed main() { //freopen("set.in", "r", stdin); //freopen("set.out", "w", stdout); int n; scanf("%lld", &n); __int128_t cur = 1; for (int i = 1; i <= n; i++) { // printf("%lld\n", i); fflush(stdout); v.clear(); for (pair <int, int> p : mp) { cur = cur * qp(p.first + i, p.second) % mod; v.push_back(make_pair(p.first + i, p.second)); } mp[i]++, mp[i] %= mod; cur = cur * i % mod; for (auto j : v) { mp[j.first] += j.second; mp[j.first] %= mod - 1; // if (mp[j.first] > 1e14 || mp[j.first] < 0) // { // printf("GGG"); // return 0; // } } } // for (auto p : mp) // { // printf("%lld %lld\n", p.first, p.second); // } // for (int c = 1; c < (1 << n); c++) // { // int a = 0; // for (int i = 1; i <= n; i++) // { // if (c & (1 << (i - 1))) // { // a += i; // } // } // lmp[a]++; // } // for (auto p : lmp) // { // printf("%lld %lld\n", p.first, p.second); // if (mp[p.first] != p.second) // { // printf("GGGG"); // return 0; // } // } // f[0] = 1; // for (int i = 1; i <= n; i++) // { // for (int j = n * (n + 1) / 2; j >= i; j--) // { // f[j] = (f[j] + f[j - i]) % mod; // // printf("%lld\n", f[j]); // } // } // for (int i = 1; i <= n * (n + 1) / 2; i++) // { // cur = cur * qp(i, f[i]) % mod; // } write(cur); return 0; } /* A*B*C*(A+B)*(A+C)*(B+C)*(A+B+C) A*B *(A+B) +C*(B*(A+B)+A*B+A*(A+B)) known abc exp d*(ab+bc+ac) */