Fişierul intrare/ieşire:hipersum.in, hipersum.outSursăScience on 2021, baraj
AutorTamio-Vesa NakajimaAdăugată deNicolaalexandraNicola Alexandra Mihaela Nicolaalexandra
Timp execuţie pe test2.5 secLimită de memorie256000 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Hipersum

Kaguya este interesată de 4 operaţii:

1. Şi-ul pe biţi, notat a&b, care coincide cu operatorul & din C++. Ca exemplu, 12&10 = 8.
2. Sau-ul pe biţi, notat a|b, care coincide cu operatorul | din C++. Ca exemplu, 12|10 = 14.
3. Maximul, notat cu max(a, b). Ca exemplu, max(2, 3) = 3.
4. Minimul, notat cu min(a, b). Ca exemplu, min(2, 3) = 2.

Cumva a ajuns să defineasca hiper-valoarea şirului a1, . . . , ak, notat cu h(a1, . . . , ak), prin expresia
h(a1, . . . , ak) = min(a1, . . . , ak) × max(a1, . . . , ak) × (a1& . . . &ak) × (a1| . . . |ak).

Miyuki o adoră pe Kaguya, deci vrea să îi facă un cadou frumos. Astfel, el îi cumpară o secvenţă v1, . . . , vN . Dar Kaguya este o fiinţa aparte, deci când primeşte acest şir, tot ce vrea e să cunoască suma hiper-valorilor tuturor subsecvenţelor lui v, modulo 109 + 7. Mai exact vrea să afle

\displaystyle\sum_{1<=i<=j<=N}^{} h(a_i, . . . , a_j) modulo 109 + 7

Il puteţi ajuta pe Miyuki să afle această valoare pentru Kaguya?

Date de intrare

Fişierul de intrare hipersum.in conţine pe prima linie numărul N. Pe a doua linie se găsesc N numere naturale separate prin spaţiu care reprezintă elementele şirului V .

Date de ieşire

În fişierul de ieşire hipersum.out se va afla un singur număr care reprezintă valoarea cerută.

Subtaskuri

  • Subtask 1 (20 puncte)
    • 1 ≤ N ≤ 1000
    • 1 ≤ vi ≤ 220
  • Subtask 2 (20 puncte)
    • 1 ≤ N ≤ 50000
    • 1 ≤ vi ≤ 220
    • Valorile din şir sunt generate în mod aleatoriu.
  • Subtask 3 (20 puncte)
    • 1 ≤ N ≤ 100000
    • 1 ≤ vi ≤ 230
    • Valorile din şir sunt generate în mod aleatoriu.
  • Subtask 4 (20 puncte)
    • 1 ≤ N ≤ 50000
    • 1 ≤ vi ≤ 220
  • Subtask 5 (20 puncte)
    • 1 ≤ N ≤ 100000
    • 1 ≤ vi ≤ 230

Exemplu

hipersum.inhipersum.out
4
1 2 3 4
390
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?