QOJ.ac

QOJ

Time Limit: 5.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#7085. Tajemniczy ciąg trójek

Statistics

Jeffery znalazł niezwykły ciąg trójek $\{(a_k,b_k,c_k)\}_{k=0}^{\infty}$:

  • $(a_0,b_0,c_0)=(2,1,0)$; oraz

  • dla każdej nieujemnej liczby całkowitej $k$, $(a_{k+1},b_{k+1},c_{k+1})=(a_k^2+b_k^2,a_kb_k+b_kc_k,b_k^2+c_k^2)$.

Na przykład $(a_1,b_1,c_1)=(5,2,1)$ i $(a_2,b_2,c_2)=(29,12,5)$.

Jeśli rozpatrujemy ciąg modulo pewna liczba całkowita $p$, niektóre trójki nigdy nie pojawią się w tym ciągu, niektóre będą pojawiać się okresowo, a inne pojawią się tylko raz.

Jeffery zastanawia się, czy możesz pomóc mu znaleźć pierwsze wystąpienie pewnych trójek, zaczynając od podanych pozycji. Czy możesz mu pomóc?

Wejście

Pierwszy wiersz zawiera dwie liczby całkowite $n$ i $p$ ($1 \le n \le 5000$, $1 \le p \le 2^{30}$), gdzie $n$ oznacza liczbę pytań, a $p$ wskazuje, że wszystkie poniższe pytania są rozpatrywane modulo $p$.

Każdy z następnych $n$ wierszy zawiera cztery liczby całkowite $x$, $y$, $z$ i $m$ ($0 \le x,y,z < p$, $0 \le m \le 10^{18}$), opisujące pytanie o najmniejszą liczbę całkowitą $k$, taką że $k \ge m$ oraz $(a_k,b_k,c_k)\equiv(x,y,z)\pmod p$.

Wyjście

Dla każdego pytania wypisz w osobnym wierszu liczbę całkowitą oznaczającą odpowiedź na to pytanie. Jeśli taka liczba całkowita $k$ nie istnieje, wypisz zamiast niej $-1$.

Przykład

Wejście 1

5 11
6 1 4 10
4 10 6 3
7 1 5 0
2 1 0 1
2 1 0 0

Wyjście 1

11
4
2
-1
0

Wejście 2

5 10
5 8 9 5
0 2 6 0
9 2 5 6
5 5 5 7
5 2 1 2

Wyjście 2

5
-1
6
-1
-1

Uwagi

W pierwszym przykładzie $(a_0,b_0,c_0)\equiv(2,1,0)$, $(a_1,b_1,c_1)\equiv(5,2,1)$, $(a_2,b_2,c_2)\equiv(7,1,5)$, $(a_{2T+3},b_{2T+3},c_{2T+3})\equiv(6,1,4)$, $(a_{2T+4},b_{2T+4},c_{2T+4})\equiv(4,10,6)\pmod{11}$ gdzie $T=0,1,2,\ldots$

W drugim przykładzie $(a_0,b_0,c_0)\equiv(2,1,0)$, $(a_1,b_1,c_1)\equiv(5,2,1)$, $(a_{2T+2},b_{2T+2},c_{2T+2})\equiv(9,2,5)$, $(a_{2T+3},b_{2T+3},c_{2T+3})\equiv(5,8,9)\pmod{10}$ gdzie $T=0,1,2,\ldots$

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.