QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#73349#4820. Kitten's ComputerJerryTclWA 0ms3804kbC++145.0kb2023-01-24 00:42:362023-01-24 00:42:37

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-01-24 00:42:37]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3804kb
  • [2023-01-24 00:42:36]
  • 提交

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 >= 201; --i) Del(i);
	for(int i = 163; i >= 101; --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]
	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)
				And(b[i + j], b[i + l - 1], b[i + j]);
	for(int i = 1; i < W; ++i) And(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]);
	Lsh(a[0], 1), Xor(a[0], a[0], b[0]);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3804kb

input:

main

output:

SET 101 1
SET 102 1
SET 103 1
SET 104 1
SET 105 1
SET 106 1
SET 107 1
SET 108 1
SET 109 1
SET 110 1
SET 111 1
SET 112 1
SET 113 1
SET 114 1
SET 115 1
SET 116 1
SET 117 1
SET 118 1
SET 119 1
SET 120 1
SET 121 1
SET 122 1
SET 123 1
SET 124 1
SET 125 1
SET 126 1
SET 127 1
SET 128 1
SET 129 1
SET 130 1
...

result:

wrong answer Wrong Answer on test 1: a[1]=2839929338295232408, a[2]=10943642511305433214, but found 18446744073709551600