"I'd just like to interject for a moment. What you're referring to as Linux, is in fact, Windows/WSL, or as I've recently taken to calling it, Windows plus WSL. Linux is not an operating system unto itself, but rather another free component of a fully functioning Windows/WSL system made useful by the WinAPI corelibs, shell utilities and vital system components comprising a full OS as implemented by Microsoft."
Cerință
Windows Subsystem for Linux (WSL) s-a săturat să fie subiectul glumelor și s-a hotărât să arate ce poate, rezolvând probleme grele de informatică. El are acum la dispoziție numere naturale .
WSL pornește de la un număr natural , asupra căruia dorește să aplice niște farmece. Aplicarea unui farmec constă în selectarea unui indice () și înlocuirea lui cu valoarea . Același indice poate fi ales de mai multe ori. O secvență de exact farmece este considerată validă dacă, după aplicarea acestora, suma cifrelor reprezentării în baza a valorii finale este divizibilă cu . Determinați numărul secvențelor valide, modulo .
WSL a rezolvat această problemă cu ușurință. Din această cauză, prof. vine la el cu numere și dorește răspunsul pentru fiecare dintre acestea. Ajutați-l pe WSL să răspundă acestor cereri.
Date de intrare
Pe prima linie se găsesc trei numere întregi, , , și . Pe următoarea linie se găsesc numere întregi . Pe a treia linie se găsește un număr întreg, , reprezentând numărul de interogări ale lui prof. . Pe ultima linie se găsesc cele numere naturale , unde reprezinta valoarea inițiala pentru fiecare interogare.
Date de ieșire
Se vor afișa linii. Pe a -a linie se va afișa un număr reprezentând numărul de secvențe valide (modulo ) pentru a -a interogare.
Restricții și precizări
- ;
- ;
- ;
- ;
- Pentru teste în valoare de 17 puncte, ;
- Pentru alte teste în valoare de 21 puncte, ;
- Pentru alte teste în valoare de 21 de puncte, ;
- Pentru alte teste în valoare de 19 de puncte, ;
- Pentru restul de 22 de puncte, nu există restricții suplimentare;
- Două secvențe sunt considerate diferite dacă indicii aleși diferă pe cel puțin o poziție, chiar dacă valorile corespunzătoare sunt egale.
Exemplul 1
stdin
3 5 2
1 2 3
2
0 2
stdout
3
2
Explicație
Avem farmece cu valorile , baza , deci suma cifrelor trebuie să fie divizibilă cu . Se aplică secvențe de exact farmece.
Există două interogări:
- Pentru , valoarea finală este suma celor farmece alese. Vrem ca suma lor să dea un rest modulo . Secvențele de farmece valide sunt: , și deoarece , iar modulo . Răspuns: .
- Pentru , valoarea finală este suma celor farmece. Vrem ca , deci suma farmecelor trebuie să dea rest la împărțirea cu . Secvențele valide sunt și . Răspuns: .
Exemplul 2
stdin
2 4 2
1 2
1
1
stdout
1
Explicație
Avem farmecele , , . Vrem divizibilitate cu .
Pentru singurul query , căutăm o sumă a 2 farmece care adunată cu se împarte exact la . Singura secvență formată din 2 farmece este cu suma , obținând valoarea finală . Răspunsul este .