To zadanie typu "output-only". Innymi słowy, zestawy danych testowych są dostępne do pobrania, a Ty masz za zadanie obliczyć odpowiedzi na własnym komputerze i przesłać je jako plik tekstowy, zamiast przesyłać program.
Busy Beaver zaczął odrabiać pracę domową z matematyki na kilka godzin przed terminem (nie rób tak!). Praca domowa składa się ze $100$ zadań; ile z nich Busy Beaver zdoła rozwiązać przed końcem konkursu?
Każde zadanie to układ równań (szczegóły dotyczące wyglądu tych równań znajdują się w sekcji Wejście). Zadanie polega na znalezieniu dodatnich rozwiązań całkowitych dla jak największej liczby tych układów. Każdy zestaw jest wart jeden punkt, łącznie do zdobycia jest $100$ punktów.
Wejście
Proszę pobrać dane testowe z załącznika.
Każdy zestaw równań rozpoczyna się od linii zawierającej dwie liczby: liczbę zmiennych $N$ w równaniach (reprezentowanych przez odpowiednią liczbę początkowych liter alfabetu) oraz liczbę równań $K$. Następnie następuje $K$ linii, z których każda zawiera jedno równanie.
Każdy wyraz po lewej stronie równania jest sformatowany po prostu jako [dodatni współczynnik całkowity, co najwyżej 1000][lista co najwyżej 6 zmiennych]; lewa strona jest zawsze sumą co najwyżej $20$ takich wyrazów (oddzielonych znakami plusa: żaden wyraz nie ma ujemnego współczynnika), a prawa strona jest zawsze dodatnią liczbą całkowitą. Wykładniki potęg nie są używane; na przykład $a^2bc$ może być zapisane jako aabc lub caab.
Każdy zestaw równań posiada rozwiązanie, w którym żadna ze zmiennych nie przekracza $10^{12}$. Równania zostały wygenerowane przy użyciu prostej metody losowej i nie mają na celu wywołania zachowania pesymistycznego w żadnym algorytmie.
Wyjście
W pierwszej linii wypisz dodatnią liczbę całkowitą $A$ ($1 \le A \le 100$): liczbę równań, które udało Ci się rozwiązać.
Następnie wypisz $A$ linii, z których każda zawiera numer rozwiązanego zestawu (od $1$ do $100$), a po nim oddzieloną spacjami listę dodatnich liczb całkowitych: wartości zmiennych w porządku alfabetycznym.
Na przykład, jeśli rozwiązałeś zestaw równań $5$ i odpowiedzią było $a = 1234$, $b = 5678$, a następnie rozwiązałeś zestaw $10$ i odpowiedzią było $a = 123$, $b = 456$, $c = 789$, Twój plik wyjściowy może wyglądać następująco:
2 5 1234 5678 10 123 456 789
Każdy zestaw równań może zostać wymieniony jako numer zadania co najwyżej raz. Twoje $A$ rozwiązań nie musi być w żadnej konkretnej kolejności (możesz podać rozwiązanie zestawu $10$ przed rozwiązaniem zestawu $5$). Jeśli istnieje wiele rozwiązań, wypisz dowolne z nich, w którym wszystkie zmienne są nie większe niż $10^{18}$ (choć, jak wspomniano powyżej, wszystkie zestawy mają rozwiązania, w których wszystkie zmienne są nie większe niż $10^{12}$).
Punktacja
Jeśli format wyjściowy jest nieprawidłowy lub jeśli jakiekolwiek dostarczone rozwiązanie dla dowolnego zestawu równań jest błędne, otrzymasz zero punktów. W przeciwnym razie otrzymasz $A$ punktów.
Aby pomóc w zaprojektowaniu algorytmu, poniżej przedstawiamy informacje o $100$ zestawach równań, gdzie $M$ to liczba, dla której zestaw posiada rozwiązanie, w którym wszystkie zmienne są nie większe niż $M$:
- Zestawy 1-2: $N = 1$, $K = 1$, $M = 10$
- Zestawy 3-7: $N = 1$, $K = 1$, $M = 10^{12}$
- Zestawy 8-9: $N = 2$, $K = 2$, $M = 10^{3}$
- Zestawy 10-12: $N = 2$, $K = 2$, $M = 10^{6}$
- Zestawy 13-20: $N = 2$, $K = 2$, $M = 10^{12}$
- Zestawy 21-24: $N = 3$, $K = 3$, $M = 10^{3}$
- Zestawy 25-33: $N = 3$, $K = 3$, $M = 10^{6}$
- Zestawy 34-40: $N = 3$, $K = 3$, $M = 10^{12}$
- Zestawy 41-57: $N = 3$, $K = 2$, $M = 10^{7}$
- Zestawy 58-60: $N = 2$, $K = 1$, $M = 10^{7}$
- Zestawy 61-70: $N = 2$, $K = 1$, $M = 10^{9}$
- Zestawy 71-83: $N = 2$, $K = 1$, $M = 10^{10}$
- Zestawy 84-92: $N = 2$, $K = 1$, $M = 10^{11}$
- Zestawy 93-100: $N = 2$, $K = 1$, $M = 10^{12}$