Considerăm numerele naturale , , , . Șirul de numere naturale este numit bun dacă următoarele condiții sunt satisfăcute simultan:
- , unde reprezintă operația "sau pe biți".
- , unde reprezintă operația "sau exclusiv pe biți".
- , pentru , unde reprezintă operația "și pe biți".
Se dau , , și , cu semnificația din enunț.
Cerință
Să se determine dacă există șiruri bune, respectiv să se determine numărul de șiruri bune, modulo .
Date de intrare
Fișierul de intrare bitsir.in conține pe prima linie trei numere naturale , și , și pe a doua linie numerele naturale . Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire bitsir.out conține exact două linii. Fișierul conține pe prima linie mesajul DA, dacă există șiruri bune, sau mesajul NU în caz contrar, iar pe a doua linie numărul de șiruri bune determinat. Valoarea de pe a doua linie a fișierului trebuie să fie un număr natural cuprins în intervalul .
Restricții și precizări
- ;
- ;
- ;
- Dacă prima linie a fișierului de ieșire este corectă, dar a doua linie a fișierului de ieșire nu este corectă, se acordă din punctajul corespunzător testului respectiv.
- Dacă prima linie a fișierului de ieșire nu este corectă, se acordă din punctajul corespunzător testului respectiv.
- Operația este reprezentată în C/C++ prin
|. Spre exemplu, . - Operația este reprezentată în în C/C++ prin
^. Spre exemplu, . - Operația este reprezentată în C/C++ prin
&. Spre exemplu, .
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 9 | |
| 2 | 9 | |
| 3 | 9 | |
| 4 | 18 | |
| 5 | 12 | , |
| 6 | 15 | , |
| 7 | 12 | |
| 8 | 16 | Fără restricții suplimentare |
Exemplul 1
bitsir.in
3 11 10
8 2 0
bitsir.out
DA
12
Explicație
Șirurile bune sunt:
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- .
Exemplul 2
bitsir.in
3 7 5
2 3 6
bitsir.out
NU
0
Explicație
Nu există șiruri bune.
Exemplul 3
bitsir.in
10 31 24
5 17 1 6 0 30 12 15 8 23
bitsir.out
DA
8388608