QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#187683 | #5019. 整数 | JWRuixi | 100 ✓ | 209ms | 14416kb | C++20 | 6.2kb | 2023-09-24 20:32:33 | 2023-09-24 20:32:34 |
Judging History
answer
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2")
// #define ATC
#define LL long long
#define eb emplace_back
#define FIO(FILENAME) freopen(FILENAME".in", "r", stdin), freopen(FILENAME".out", "w", stdout)
using namespace std;
#ifdef ATC
#include <atcoder/all>
using namespace atcoder;
#endif
#define OPENIOBUF
namespace FastIO {
class FastIOBase {
protected:
#ifdef OPENIOBUF
static const int BUFSIZE = 1 << 22;
char buf[BUFSIZE + 1];
int buf_p = 0;
#endif
FILE *target;
public:
#ifdef OPENIOBUF
virtual void flush() = 0;
#endif
FastIOBase(FILE *f) : target(f) {}
~FastIOBase() = default;
};
class FastOutput : public FastIOBase {
#ifdef OPENIOBUF
public:
inline void flush() { fwrite(buf, 1, buf_p, target), buf_p = 0; }
#endif
protected:
inline void __putc(char x) {
#ifdef OPENIOBUF
if (buf[buf_p++] = x, buf_p == BUFSIZE)
flush();
#else
putc(x, target);
#endif
}
template <typename T>
inline void __write(T x) {
static char stk[64], *top;
top = stk;
if (x < 0)
return __putc('-'), __write(-x);
do *(top++) = x % 10, x /= 10;
while (x);
for (; top != stk; __putc(*(--top) + '0'));
}
public:
FastOutput(FILE *f = stdout) : FastIOBase(f) {}
#ifdef OPENIOBUF
inline void setTarget(FILE *f) { this->flush(), target = f; }
~FastOutput() { flush(); }
#else
inline void setTarget(FILE *f) { target = f; }
#endif
template <typename... T>
inline void writesp(const T &...x) { initializer_list<int>{(this->operator<<(x), __putc(' '), 0)...}; }
template <typename... T>
inline void writeln(const T &...x) { initializer_list<int>{(this->operator<<(x), __putc('\n'), 0)...}; }
inline FastOutput &operator<<(char x) { return __putc(x), *this; }
inline FastOutput &operator<<(const char *s) {
for (; *s; __putc(*(s++)));
return *this;
}
inline FastOutput &operator<<(const string &s) { return (*this) << s.c_str(); }
template <typename T, typename = typename enable_if<is_integral<T>::value>::type>
inline FastOutput &operator<<(const T &x) { return __write(x), *this; }
};
FastOutput qout = FastOutput(stdout);
FastOutput qerr = FastOutput(stderr);
class FastInput : public FastIOBase {
#ifdef OPENIOBUF
public:
inline void flush() { buf[fread(buf, 1, BUFSIZE, target)] = '\0', buf_p = 0; }
#endif
protected:
inline char __getc() {
#ifdef OPENIOBUF
if (buf_p == BUFSIZE)
flush();
return buf[buf_p++];
#else
return getc(target);
#endif
}
public:
#ifdef OPENIOBUF
FastInput(FILE *f = stdin) : FastIOBase(f) { buf_p = BUFSIZE; }
inline void setTarget(FILE *f) { this->flush(), target = f; }
#else
FastInput(FILE *f = stdin) : FastIOBase(f) {}
inline void setTarget(FILE *f) { target = f; }
#endif
inline char getchar() { return __getc(); }
template <typename... T>
inline void read(T &...x) { initializer_list<int>{(this->operator>>(x), 0)...}; }
inline FastInput &operator>>(char &x) {
while (isspace(x = __getc()));
return *this;
}
template <typename T, typename = typename enable_if<is_integral<T>::value>::type>
inline FastInput &operator>>(T &x) {
static char ch, sym;
x = sym = 0;
while (isspace(ch = __getc()));
if (ch == '-') sym = 1, ch = __getc();
for (; isdigit(ch); x = (x << 1) + (x << 3) + (ch ^ 48), ch = __getc());
return sym ? x = -x : x, *this;
}
inline FastInput &operator>>(char *s) {
while (isspace(*s = __getc()));
for (; !isspace(*s) && *s && ~*s; *(++s) = __getc());
return *s = '\0', *this;
}
inline FastInput &operator>>(string &s) {
char str_buf[(1 << 8) + 1], *p = str_buf;
char *const buf_end = str_buf + (1 << 8);
while (isspace(*p = __getc()));
for (s.clear(), p++;; p = str_buf) {
for (; p != buf_end && !isspace(*p = __getc()) && *p && ~*p; p++);
*p = '\0', s.append(str_buf);
if (p != buf_end) break;
}
return *this;
}
} qin;
}
using namespace FastIO;
const int N = 20, M = (1 << 18) + 9, mod = 998244353;
int n, st[M], f[M], g[M], h[M], mp[M];
LL r[N];
char ss[M];
template<typename T>
inline T fix (T x) { x %= mod; return x < 0 ? x + mod : x; }
template<typename T, typename _T>
inline void inc (T &x, const _T &y) { x += y; x >= mod && (x -= mod); }
template<typename T, typename _T>
inline void dec (T &x, const _T &y) { x -= y; x < 0 && (x += mod); }
inline void FWT (auto A, int o) {
for (int i = 1, t = 0; i < (1 << n); i <<= 1, ++t)
for (int j = 0, p = i << 1; j < (1 << n); j += p)
for (int k = j; k < j + i; k++)
(r[t] >> o & 1) ? inc(A[k], A[k + i]) : inc(A[k + i], A[k]);
}
inline void iFWT (auto A, int o) {
for (int i = 1, t = 0; i < (1 << n); i <<= 1, ++t)
for (int j = 0, p = i << 1; j < (1 << n); j += p)
for (int k = j; k < j + i; k++)
(r[t] >> o & 1) ? dec(A[k], A[k + i]) : dec(A[k + i], A[k]);
}
int main() {
// FIO("1");
qin >> n;
for (int i = 0; i < n; i++) qin >> r[i];
qin >> ss;
for (int i = 0; i < (1 << n); i++) st[i] = ss[i] == '1';
h[0] = 1;
for (int i = 0; i < 60; i++) {
for (int j = 0; j < (1 << n); j++) f[j] = h[j], g[j] = st[j];
FWT(f, i), FWT(g, i);
for (int j = 0; j < (1 << n); j++) f[j] = (LL)f[j] * g[j] % mod;
iFWT(f, i);
for (int j = 0; j < (1 << n); j++) h[j] = f[j];
}
qout << h[0];
// cerr << 1. * clock() / CLOCKS_PER_SEC;
}
// I love WHQ!
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 5
Accepted
time: 2ms
memory: 13892kb
input:
2 557860450892773247 1006376652976945084 1001
output:
434419861
result:
ok 1 number(s): "434419861"
Test #2:
score: 5
Accepted
time: 2ms
memory: 13896kb
input:
2 1114627670617095929 177024338535020511 1000
output:
1
result:
ok 1 number(s): "1"
Test #3:
score: 5
Accepted
time: 0ms
memory: 13828kb
input:
2 1149393890526355314 1070730158013930700 1001
output:
315168037
result:
ok 1 number(s): "315168037"
Test #4:
score: 5
Accepted
time: 0ms
memory: 13944kb
input:
2 971930549804858302 431201925917048822 1001
output:
713084688
result:
ok 1 number(s): "713084688"
Test #5:
score: 5
Accepted
time: 25ms
memory: 13880kb
input:
15 3 2 1 3 0 3 2 2 3 0 3 3 3 1 1 111100000011100110100011100000100010011010010011011101110110000011100111101101100011111100111010001010010001001111010011000000110110011111000011100100010100011010110000000010011110101111110110110100011101011101011100110000001100110111101001101001010111011000000110010...
output:
919883
result:
ok 1 number(s): "919883"
Test #6:
score: 5
Accepted
time: 209ms
memory: 12448kb
input:
18 3 0 3 2 3 3 3 3 3 3 3 1 3 3 3 3 1 3 101101001111111010001101010111101111110111100111111011010010011000101111101100011100101111101001001010010110011001001110011101011100001100100000100011001110101101110010011011000001001001000000001001010000010100010101010101010001001110100111001001110001101000111...
output:
812380442
result:
ok 1 number(s): "812380442"
Test #7:
score: 5
Accepted
time: 205ms
memory: 14324kb
input:
18 3 2 3 3 3 3 3 3 3 1 1 1 2 3 1 3 3 3 100101100011011110000000100100001001010001001000110011011111000010001110111011111010001011101101010101111111000111000011110001100111100001110100110100010101111100001001110110000000111100110011011011000110001010100110001101011011011101000110001000101101000110000...
output:
609445751
result:
ok 1 number(s): "609445751"
Test #8:
score: 5
Accepted
time: 0ms
memory: 13884kb
input:
9 774618017057897470 1150648813667465147 936044467577552867 540429591977619391 492984435788926911 706491668336975855 1148409108818935103 1152305623476461243 1151646826418395103 101100111100110000011001010001100101011001010001111000000000000001011100001010001011100110010110100001000101101101101001011...
output:
762304370
result:
ok 1 number(s): "762304370"
Test #9:
score: 5
Accepted
time: 2ms
memory: 11900kb
input:
9 864195661015236599 828072363954386938 215046877307787767 125420173910435807 863300627424341495 1125890835854768063 538106264396606431 1008449764986412979 1112933880000274175 1111011011101000110000110000110110111101111110011110001110010111100001010001110110111000101011110011001000101011100011011100...
output:
91522040
result:
ok 1 number(s): "91522040"
Test #10:
score: 5
Accepted
time: 2ms
memory: 13836kb
input:
9 1060294142652751871 270953131468627965 950114304166317032 1023152535943950935 1124721212123772879 1136030244306680786 575888989072637942 576457170017579983 1071468780714196734 10010111011101001111011010000011000000111111000001100001001110001000000000101001001101110110001001111011110111101001000000...
output:
235859607
result:
ok 1 number(s): "235859607"
Test #11:
score: 5
Accepted
time: 0ms
memory: 13832kb
input:
11 1044692707433249934 1008683100277431676 999797431367270367 1143631656501850799 1098790111790735245 468268805647233519 539233207094867537 414313023104679647 1113992177660166126 1150563014851263359 1146149597257104766 111100100001011011010001100111000010001101110011110101110101010110100111111011000...
output:
238088536
result:
ok 1 number(s): "238088536"
Test #12:
score: 5
Accepted
time: 0ms
memory: 13884kb
input:
11 1136928866896019455 954477066817884159 139540257629524991 920699090857753087 852006989960417247 557707207097472255 575228611095427007 1006976729003116287 709142041517850567 1136595818501773047 1006109764096082108 100001110101001011001100010000100000111110011110100011000011111011000001010001110001...
output:
770640307
result:
ok 1 number(s): "770640307"
Test #13:
score: 5
Accepted
time: 3ms
memory: 13824kb
input:
11 1152568556892716543 1152920608551467963 216135265528237819 1116892698712710517 1125524963696923135 990737955748133887 575754796832378359 959086400709851129 571809817905978127 391758946252877613 553053934827077551 100001001101100001010110011000000001110110100101011111010110001101000110111100110011...
output:
12490130
result:
ok 1 number(s): "12490130"
Test #14:
score: 5
Accepted
time: 3ms
memory: 13888kb
input:
13 431747275278769839 792173935971856335 842168688984356222 709201683711004463 1096549254077341383 432312541824942061 423302887995576278 1152284609275166700 1150353045444060639 858881033326555901 429385610205061119 394803803773730111 792573841785221941 11101010110000000010101000000011010001110011111...
output:
711924090
result:
ok 1 number(s): "711924090"
Test #15:
score: 5
Accepted
time: 8ms
memory: 11888kb
input:
13 384952197575497562 925188207794820790 819636358341950664 1008806169945307033 485498962656536575 576170342985224059 1152884825316839167 519602798379984887 1148271257506507710 864338725486642591 141147914734645085 945751520335947454 828363124049108987 10111011110011010100110001011011010100001001111...
output:
17257245
result:
ok 1 number(s): "17257245"
Test #16:
score: 5
Accepted
time: 7ms
memory: 11884kb
input:
13 812148678079544783 531352737042856447 360252648370171639 827797221788122302 1076354330155122647 571657826460300281 995857311985303518 576390067592282047 573059687658290935 1134130623250689782 573953435640528550 1148043723132895167 576443122223672059 11010001100111100001101001010010100111100000010...
output:
513017470
result:
ok 1 number(s): "513017470"
Test #17:
score: 5
Accepted
time: 200ms
memory: 14008kb
input:
18 557601891651940085 863281395625602303 810348831133032447 855679530581929974 1143340273566153982 1142779849869883883 495305789849593903 1141378831228050923 539285017652624765 1151477836095937523 968834653063196607 462735989800959869 567170978455011071 936570564589289083 1089862139502785535 1274543...
output:
905600077
result:
ok 1 number(s): "905600077"
Test #18:
score: 5
Accepted
time: 199ms
memory: 14208kb
input:
18 35461063007254983 250722149174607860 990787107658114938 521176448595639215 1142533318210222071 848423510290851199 936184673027902967 1035761934176939767 1152921455940040799 759980081052254206 841582125096893943 1105339004669119437 1071810531808477044 1072419334446896991 1152903339507575642 131161...
output:
946673491
result:
ok 1 number(s): "946673491"
Test #19:
score: 5
Accepted
time: 201ms
memory: 14416kb
input:
18 526745011001725941 995280101634205694 1150650377238908861 1152780629645981351 378291368993988607 754341611678006135 1133780828220553215 467476844077883365 998548842292821951 1125758065340935934 1074758391215161343 359069688757419477 863137999561424871 459006511440394231 856772308259666431 2832407...
output:
333911712
result:
ok 1 number(s): "333911712"
Test #20:
score: 5
Accepted
time: 199ms
memory: 12664kb
input:
18 1116852845721419519 564031047050710929 1152918474977164029 288041155646291455 647954749928207825 978368260719998815 1141854864204889983 1121382897240509261 576459613035256827 1134273717606465523 1124121994315404271 714513083207720351 1001083345502337005 642993847483219627 1143878547027000662 1139...
output:
437797272
result:
ok 1 number(s): "437797272"