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