QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#73344#4820. Kitten's ComputerJerryTclWA 2ms3500kbC++144.9kb2023-01-24 00:09:472023-01-24 00:09:49

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:09:49]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:3500kb
  • [2023-01-24 00:09:47]
  • 提交

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]
	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;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 3500kb

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 3689348814741910320