Cerință
Se dă un șir de numere naturale, un număr și query-uri. -costul unei secvențe este numărul de numere distincte din secvență care apar de cel puțin ori în ea și au cel puțin un divizor comun cu diferit de .
Se dau numere , reprezentând query-urile. Pentru fiecare trebuie să aflați suma -costurilor tuturor subsecvențelor din șir.
Date de implementare
Trebuie să implementați următoarea funcție:
std::vector<long long> solve(int n, int k, int q, std::vector<int> v, std::vector<int> x);
Această funcție trebuie să returneze răspunsul pentru cele interogări. Ea va fi apelată o singură dată la fiecare executare a programului. Observați că vectorul (șirul) este indexat de la la și vectorul (vectorul de query-uri) este indexat de la la .
Nu uitați sa includeți header-ul mcnugget.h
! De asemenea, nu uitați că nu trebuie să implementați funcția main
, doar funcția solve
.
Exemplu de grader
Un exemplu de grader citește , șirul și șirul . Apoi va apela și va afișa răspunsurile la ecran, fiecare pe câte o linie.
Restricții și precizări
- ;
- , pentru de la la si de la la ;
# | Punctaj | Restricții |
---|---|---|
0 | 0 | Exemplu |
1 | 10 | , |
2 | 30 | |
3 | 45 | |
4 | 15 | Fără alte restricții |
Exemplu
stdin
4 1 2
6 6 5 9
10
5
stdout
13
6
Explicație
La primul query sunt secvențe cu -costul egal cu . Acestea sunt , , , , . Sunt secvențe cu -cost egal cu : , , , . Observație: și .
La al doilea query sunt secvențe cu -cost egal cu . Acestea sunt cele care îl conțin pe (, , , , , ).