sugubatz

Time limit: 0.6s Memory limit: 30MB Input: Output:

Cosmin se plictisea la ora de limba și literatura română, când domnul profesor le-a spus elevilor faptul că în opera „Povestea lui Harap-Alb” există un personaj șugubăț. În acel moment, Cosmin și-a adus aminte de o problemă șugubeață pe care nu știe să o rezolve. În schimb, dacă îl veți ajuta să rezolve problema, vă va trimite prin poștă un spiriduș șugubăț, care are o vioară și un arcuș. Astfel, Cosmin va înțelege felul în care se rezolvă problema, iar voi vă veți bucura de muzică armonioasă.

Cerință

Se dau două numere, NN și XX, urmate de un șir AA de NN numere naturale nenule, indexat de la 11 la NN. Se va construi un nou șir BB, unde fiecare număr bib_i (1iN1 \leq i \leq N) ia cea mai mare valoare a celui mai mare divizor comun pe care aia_i îl are cu un alt număr din șirul AA. Să se determine numărul de subsecvențe din șirul BB care au suma "sau" pe biți mai mare sau egală cu numărul XX.

O subsecvență din șirul BB este o înșiruire de elemente de pe poziții diferite, consecutive.

Suma "sau" pe biți a unei subsecvențe v1,v2,,vkv_1, v_2, \dots, v_k este definită ca v1v2vkv_1 \vert v_2 \vert \dots \vert v_k, unde \vert semnifică operatorul "sau" pe biți.

Date de intrare

Pe prima linie se vor găsi numerele naturale NN și XX, iar pe a doua linie se vor găsi cele NN numere naturale ale șirului AA. Numerele aflate pe aceeași linie sunt separate prin câte un spațiu.

Date de ieșire

Se va afișa un singur număr ce reprezintă numărul de subsecvențe cu proprietatea cerută.

Restricții și precizări

  • 2N1 000 0002 \leq N \leq 1 \ 000 \ 000;
  • 1X1 000 0001 \leq X \leq 1 \ 000 \ 000;
  • 1ai1 000 0001 \leq a_i \leq 1 \ 000 \ 000.
# Punctaj Restricții
1 22 2N1 0002 \leq N \leq 1 \ 000
2 31 2N100 0002 \leq N \leq 100 \ 000
3 47 Fără alte restricții suplimentare

Observație

Datorită datelor de intrare foarte mari, se vor folosi instrucțiunile următoare la începutul funcției main() în programul C++:

ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);

Exemplu

stdin

5 3
17 2 9 12 2

stdout

12

Explicație

După ce fiecare număr bib_i (1iN1 \leq i \leq N) ia cea mai mare valoare a celui mai mare divizor comun pe care aia_i îl are cu un alt număr din șirul AA, șirul BB are valorile 1,2,3,3,21, 2, 3, 3, 2. În acest nou șir există 1212 secvențe care au suma "sau" pe biți mai mare sau egală cu 33.

Log in or sign up to be able to send submissions!