Universal Cup Judging System

Universal Cup

시간 제한: 1.0 s 메모리 제한: 256 MB 총점: 100 인터랙티브
통계

Diese Aufgabe ist interaktiv. Nach der Ausgabe jeder Zeile musst du den Ausgabepuffer leeren (flush). Du kannst cout << flush in C++, System.out.flush() in Java und sys.stdout.flush() in Python verwenden. Du musst die Anweisungen im Abschnitt Interaktion strikt befolgen; andernfalls erhältst du möglicherweise Bewertungen wie falsche Antwort (wrong answer), Zeitlimit überschritten (time limit exceeded) oder andere.

Da in allen Aufgaben mythische Zwerge die Hauptfiguren sind, lohnt es sich vielleicht, endlich einmal über etwas Greifbares nachzudenken.

Es gibt eine versteckte Folge $A$ der Länge $N$, die aus ganzen Zahlen im Bereich $[0, 2^N - 1]$ besteht. Deine Aufgabe ist es, sie mithilfe einer begrenzten Anzahl von Anfragen wiederherzustellen. In jeder Anfrage gibst du eine Folge $B$ der Länge $N$ mit Elementen im Bereich $[0, 2^N - 1]$ an. Die Antwort wird wie folgt berechnet:

  • Es wird eine Folge $C$ erstellt, wobei das $i$-te Element von $C$ das bitweise XOR (bitwise xor) der $i$-ten Elemente von $A$ und $B$ ist. Wir bezeichnen XOR mit $\oplus$.
  • Die Menge $S$ wird als die Menge aller Werte konstruiert, die man durch XOR-Verknüpfung einer Teilmenge von Elementen aus $C$ erhalten kann. Insbesondere ist für die leere Teilmenge das XOR gleich $0$.
  • Die Antwort auf die Anfrage ist $|S|$.

Wenn zum Beispiel $A = (1, 4, 3)$ und $B = (0, 4, 7)$ ist, dann ist $C = (1 \oplus 0, 4 \oplus 4, 3 \oplus 7) = (1, 0, 4)$ und $S = \{0, 1, 4, 5\}$, also lautet die Antwort $4$.

Das bitweise XOR zweier Zahlen $x$ und $y$ hat das Bit $i$ genau dann gesetzt, wenn genau eine der Zahlen $x$ und $y$ das Bit $i$ gesetzt hat. Zum Beispiel ist $5 \oplus 3 = (101)_2 \oplus (011)_2 = (110)_2 = 6$. In C++ und Python ist XOR der Operator ^.

Interaktion

Die Folge $A$ steht von Anfang an fest und hängt nicht von den gestellten Anfragen ab.

Lies zuerst eine Zeile mit einer ganzen Zahl $1 \le N \le 60$ ein. Danach kannst du Anfragen stellen.

Um eine Anfrage zu stellen, gib eine Zeile mit ? gefolgt von $N$ ganzen Zahlen im Bereich $[0, 2^N - 1]$ aus. Lies als Antwort eine ganze Zahl ein, die das Ergebnis darstellt.

Wenn du bereit bist, gib ! gefolgt von den $N$ ganzen Zahlen der versteckten Folge aus. Danach muss sich dein Programm ohne weitere Ausgabe beenden.

Denke daran, die Ausgabe nach jeder Anfrage und nach dem Schreiben der Antwort zu leeren (flush). Setze Leerzeichen zwischen Zahlen und den Symbolen ?, !.

Beispiele

Eingabe 1

3
4
8

Ausgabe 1

? 1 2 3
? 0 0 0
! 1 3 4

Hinweis

Die Erklärung für die Beispielinteraktion: $N = 3$ Anfrage ? 1 2 3: $B = (1, 2, 3)$, $C = (1 \oplus 1, 3 \oplus 2, 4 \oplus 3) = (0, 1, 7)$, $S = \{0, 1, 6, 7\}$, Antwort ist $4$. Anfrage ? 0 0 0: $B = (0, 0, 0)$, $C = (1 \oplus 0, 3 \oplus 0, 4 \oplus 0) = (1, 3, 4)$, $S = \{0, 1, \dots, 7\}$, Antwort ist $8$. Ausgabe ! 1 3 4: Die versteckte Folge ist $A = (1, 3, 4)$.

Lokales Testen

Im Abschnitt Files findest du B.zip mit Beispieltests und einem Grader grader.cpp. Um deine Lösung zu testen, kompiliere sie und übergib dann den Testnamen und deine ausführbare Datei an den kompilierten ./grader:

./grader [test] [executable]

Zum Beispiel: ./grader 0b.in ./abc

Es wird nicht garantiert, dass sich der Beispiel-Grader identisch zum offiziellen verhält. Allerdings ist keiner von beiden adaptiv.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.