QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#73345 | #4820. Kitten's Computer | JerryTcl | WA | 2ms | 3548kb | C++14 | 4.9kb | 2023-01-24 00:11:03 | 2023-01-24 00:11:04 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int W = 64;
int s[600], t;
int New() { return s[t--]; }
void Del(int x) { s[++t] = x; }
void Set(int i, int j) { printf("SET %d %d\n", i, j); }
void Xor(int i, int j, int k) { printf("XOR %d %d %d\n", i, j, k); }
void And(int i, int j, int k) { printf("AND %d %d %d\n", i, j, k); }
void Or(int i, int j, int k) { printf("OR %d %d %d\n", i, j, k); }
void Lsh(int i, int j) { printf("LSH %d %d\n", i, j); }
void Rsh(int i, int j) { printf("RSH %d %d\n", i, j); }
void Get(int i, int j) { Lsh(i, W - j - 1), Rsh(i, W - 1); }
void Fill(int i, int j) {
Set(j, i), Lsh(j, 0x01), Or(i, i, j), Set(j, i), Lsh(j, 0x02), Or(i, i, j);
Set(j, i), Lsh(j, 0x04), Or(i, i, j), Set(j, i), Lsh(j, 0x08), Or(i, i, j);
Set(j, i), Lsh(j, 0x10), Or(i, i, j), Set(j, i), Lsh(j, 0x20), Or(i, i, j);
}
void Add3(int i, int j, int k, int u, int v, int w) {
Xor(u, i, j), And(v, u, k), And(w, i, j), Xor(u, u, k), Xor(v, v, w);
}
int main() {
for(int i = 400; i >= 3; --i) Del(i);
int a[W] = { 1 }, b[W] = { 2 }, c[W * 2];
for(int i = 1; i < W; ++i) a[i] = New(), Set(a[i], a[0]);
for(int i = 1; i < W; ++i) b[i] = New(), Set(b[i], b[0]);
for(int i = 0; i < W * 2; ++i) c[i] = New();
/* for(int i = 0; i < W; ++i)
Lsh(a[i], i), Get(b[i], i), Fill(b[i], c[i]), And(a[i], a[i], b[i]);
// a[0] ~ a[63]
Add3(a[0], a[1], a[2], b[0], b[1], c[0]);
Add3(a[3], a[4], a[5], b[2], b[3], c[1]);
Add3(a[6], a[7], a[8], b[4], b[5], c[2]);
Add3(a[9], a[10], a[11], b[6], b[7], c[3]);
Add3(a[12], a[13], a[14], b[8], b[9], c[4]);
Add3(a[15], a[16], a[17], b[10], b[11], c[5]);
Add3(a[18], a[19], a[20], b[12], b[13], c[6]);
Add3(a[21], a[22], a[23], b[14], b[15], c[7]);
Add3(a[24], a[25], a[26], b[16], b[17], c[8]);
Add3(a[27], a[28], a[29], b[18], b[19], c[9]);
Add3(a[30], a[31], a[32], b[20], b[21], c[10]);
Add3(a[33], a[34], a[35], b[22], b[23], c[11]);
Add3(a[36], a[37], a[38], b[24], b[25], c[12]);
Add3(a[39], a[40], a[41], b[26], b[27], c[13]);
Add3(a[42], a[43], a[44], b[28], b[29], c[14]);
Add3(a[45], a[46], a[47], b[30], b[31], c[15]);
Add3(a[48], a[49], a[50], b[32], b[33], c[16]);
Add3(a[51], a[52], a[53], b[34], b[35], c[17]);
Add3(a[54], a[55], a[56], b[36], b[37], c[18]);
Add3(a[57], a[58], a[59], b[38], b[39], c[19]);
Add3(a[60], a[61], a[62], b[40], b[41], c[20]);
// b[0] ~ b[41], a[63]
Add3(b[0], b[1], b[2], a[0], a[1], c[0]);
Add3(b[3], b[4], b[5], a[2], a[3], c[1]);
Add3(b[6], b[7], b[8], a[4], a[5], c[2]);
Add3(b[9], b[10], b[11], a[6], a[7], c[3]);
Add3(b[12], b[13], b[14], a[8], a[9], c[4]);
Add3(b[15], b[16], b[17], a[10], a[11], c[5]);
Add3(b[18], b[19], b[20], a[12], a[13], c[6]);
Add3(b[21], b[22], b[23], a[14], a[15], c[7]);
Add3(b[24], b[25], b[26], a[16], a[17], c[8]);
Add3(b[27], b[28], b[29], a[18], a[19], c[9]);
Add3(b[30], b[31], b[32], a[20], a[21], c[10]);
Add3(b[33], b[34], b[35], a[22], a[23], c[11]);
Add3(b[36], b[37], b[38], a[24], a[25], c[12]);
Add3(b[39], b[40], b[41], a[26], a[27], c[13]);
// a[0] ~ a[27], a[63]
Add3(a[0], a[1], a[2], b[0], b[1], c[0]);
Add3(a[3], a[4], a[5], b[2], b[3], c[1]);
Add3(a[6], a[7], a[8], b[4], b[5], c[2]);
Add3(a[9], a[10], a[11], b[6], b[7], c[3]);
Add3(a[12], a[13], a[14], b[8], b[9], c[4]);
Add3(a[15], a[16], a[17], b[10], b[11], c[5]);
Add3(a[18], a[19], a[20], b[12], b[13], c[6]);
Add3(a[21], a[22], a[23], b[14], b[15], c[7]);
Add3(a[24], a[25], a[26], b[16], b[17], c[8]);
// b[0] ~ b[17], a[63], a[27]
Add3(b[0], b[1], b[2], a[0], a[1], c[0]);
Add3(b[3], b[4], b[5], a[2], a[3], c[1]);
Add3(b[6], b[7], b[8], a[4], a[5], c[2]);
Add3(b[9], b[10], b[11], a[6], a[7], c[3]);
Add3(b[12], b[13], b[14], a[8], a[9], c[4]);
Add3(b[15], b[16], b[17], a[10], a[11], c[5]);
// a[0] ~ a[11], a[63], a[27]
Add3(a[0], a[1], a[2], b[0], b[1], c[0]);
Add3(a[3], a[4], a[5], b[2], b[3], c[1]);
Add3(a[6], a[7], a[8], b[4], b[5], c[2]);
Add3(a[9], a[10], a[11], b[6], b[7], c[3]);
// b[0] ~ b[7], a[63], a[27]
Add3(b[0], b[1], b[2], a[0], a[1], c[0]);
Add3(b[3], b[4], b[5], a[2], a[3], c[1]);
Add3(b[6], b[7], a[63], a[4], a[5], c[2]);
// a[0] ~ a[5], a[27]
Add3(a[0], a[1], a[2], b[0], b[1], c[0]);
Add3(a[3], a[4], a[5], b[2], b[3], c[1]);
// b[0] ~ b[3], a[27]
Add3(b[0], b[1], b[2], a[0], a[1], c[0]);
// a[0], a[1], a[27], b[3]
Add3(a[0], a[1], a[27], b[0], b[1], c[0]);
// b[0], b[1], b[3]
Add3(b[0], b[1], b[3], a[0], a[1], c[0]);
// a[0], a[1]
*/
Set(a[1], b[0]), Xor(b[0], a[0], a[1]), And(a[0], a[0], a[1]);
for(int i = 1; i < W; ++i) Set(a[i], a[0]), Lsh(a[i], i);
for(int i = 1; i < W; ++i) Set(b[i], b[0]), Lsh(b[i], i);
for(int l = 1; l < W; l <<= 1)
for(int i = 0; i < W; i += (l << 1))
for(int j = l; j < (l << 1); ++j)
Xor(b[i + j], b[i + l - 1], b[i + j]);
for(int i = 1; i < W; ++i) Xor(a[i], b[i - 1], a[i]);
for(int l = 1; l < W; l <<= 1)
for(int i = 0; i < W; i += (l << 1)) Xor(a[i], a[i + l], a[i]);
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 3548kb
input:
main
output:
SET 3 1 SET 4 1 SET 5 1 SET 6 1 SET 7 1 SET 8 1 SET 9 1 SET 10 1 SET 11 1 SET 12 1 SET 13 1 SET 14 1 SET 15 1 SET 16 1 SET 17 1 SET 18 1 SET 19 1 SET 20 1 SET 21 1 SET 22 1 SET 23 1 SET 24 1 SET 25 1 SET 26 1 SET 27 1 SET 28 1 SET 29 1 SET 30 1 SET 31 1 SET 32 1 SET 33 1 SET 34 1 SET 35 1 SET 36 1 S...
result:
wrong answer Wrong Answer on test 1: a[1]=2839929338295232408, a[2]=10943642511305433214, but found 2861715995853300118