Universal Cup Judging System

Universal Cup

시간 제한: 2.0 s 메모리 제한: 1024 MB 총점: 100 해킹 가능 ✓
통계

För att avgöra om rotade träd är isomorfa (i detta problem behöver du inga förkunskaper om trädisomorfi) är en vanlig algoritm att använda trädhashning (tree hashing). Med en lämplig hashfunktion ger icke-isomorfa rotade träd sannolikt olika hashvärden, men hashkollisioner är samtidigt svåra att undvika.

Det finns olika implementationer av hashfunktioner, men vissa konstruktioner av hashfunktioner är inte särskilt korrekta. Lilla C har en sådan ”inte särskilt korrekt” hashfunktion, definierad enligt följande: Låt $sz_x$ vara antalet noder i delträdet till $x$, och låt $son_x$ vara mängden av alla barnnoder till $x$. För ett rotat träd med $r$ som rot definieras dess hashvärde $h(r)$ som:

$$h(r) = 1 + \sum_{v \in son_r} h(v) \times f(sz_v)$$

där $f$ representerar en godtycklig avbildning från mängden av positiva heltal till mängden av positiva heltal, det vill säga $f \in \{\varphi : \mathbb{Z}^+ \to \mathbb{Z}^+\}$. Speciellt är hashvärdet för ett rotat träd med endast en nod lika med $1$.

Därefter definierar Lilla C att för två rotade träd gäller följande: om det för alla val av $f$ är omöjligt att beräkna olika hashvärden, sägs de två träden vara oskiljbara; annars, om det finns ett val av $f$ sådant att de två träden kan ge olika hashvärden, sägs de två träden vara skiljbara.

Lilla C vill använda denna hashfunktion för att generera så många rotade binära träd som möjligt, det vill säga rotade träd där varje nod har högst två barnnoder. Lilla C hoppas att du kan beräkna det maximala antalet parvis skiljbara rotade binära träd som innehåller $n$ noder. Eftersom svaret förstås kan bli mycket stort har Lilla C förberett en modul $p$ åt dig, och du ska ange ditt resultat modulo $p$.

Indata

Detta problem innehåller flera testfall. Den första raden i indatan innehåller ett heltal $T$ ($1 \le T \le 10000$), som representerar antalet testfall.

För varje testfall består indatan av en enda rad med två heltal $n, p$ ($1 \le n \le 3000, 2 \le p \le 10^9 + 9$), som representerar antalet noder i det rotade trädet samt modulen som Lilla C tillhandahållit.

Det garanteras att den totala summan av $n$ för alla testfall inte överstiger $10000$.

Utdata

För varje testfall, skriv ut en enda rad med ett heltal som representerar svaret modulo $p$.

Exempel

Exempelindata 1

8
1 1000000009
5 1000000009
10 1000000009
15 1000000009
100 1000000009
150 1000000009
1000 1000000009
1500 1000000009

Exempelutdata 1

1
6
207
10904
478868953
202933416
152259136
264735211

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.