Time limit: 0.7s
Memory limit: 64MB
Input:
Output:
Considerăm următoarea funcție care primește ca input o permutare, , a mulțimii .
int count_max_changes(const std::vector<int>& P) {
int max_value = 0, count = 0;
for (const int value : P) {
if (value > max_value) {
max_value = value;
count++;
}
}
return count;
}
Cerință
Dându-se două numere naturale, și , să se numere pentru câte permutări, , ale mulțimii avem . De vreme ce acest număr poate fi foarte mare, se cere doar restul său la împărțirea cu .
Date de intrare
Pe prima linie se găsesc două numere naturale, și .
Date de ieșire
Pe prima linie se va găsi un singur număr natural, numărul de permutări pentru care funcția de mai sus returnează un număr mai mic sau egal decât , modulo .
Restricții și precizări
- ;
- Pentru teste valorând puncte, ;
- Pentru teste valorând alte de puncte, ;
- Pentru restul de de puncte, nu există restricții suplimentare.
Exemplul 1
stdin
5 3
stdout
109
Exemplul 2
stdin
319 123
stdout
182709129