Mišof doma upratoval a v krabici od topánok našiel celkom peknú úlohu. Bolo mu ju ľúto vyhodiť a na jej riešenie nemal čas, tak sa rozhodol, že ju dá vám. Zadanie vyzerá nasledovne:
Každé číslo
je prirodzené číslo od 1 do 100.
Každý výraz
je buď súčin
, alebo výraz+súčin
, alebo výraz-súčin
.
Každý súčin
je buď term
alebo súčin*term
.
Každý term
je buď číslo
, alebo (výraz)
, alebo unárfcia
, alebo binárfcia
.
Každá unárfcia
je div2(výraz)
. Funkcia div2
pre vstup \(x\) vracia hodnotu \(x/2\) zaokrúhlenú nadol.
Každá binárfcia
je buď min(výraz,výraz)
alebo max(výraz,výraz)
– význam týchto funkcií je snáď jasný.
Úloha
Na vstupe je nejaký výraz
. Naschvál sme ho pokazili: namiesto niektorých čísel
v ňom môže byť otáznik.
Zistite, či má daný výraz
jednoznačne určenú hodnotu. Ak áno, nájdite ju.
Formát vstupu
Vstup má niekoľko riadkov (od 1 do 10). V každom je jeden výraz
. Každý výraz
má aspoň 1 a najviac 100 znakov a spĺňa vyššie uvedený popis.
Formát výstupu
Pre každý výraz
zo vstupu vypíšte jeden riadok. Ak je jeho hodnota jednoznačne určená, vypíšte ju, inak vypíšte otáznik.
Hodnotenie
Je 20 vstupov. V prvých 6 vstupoch nie sú otázniky. Ďalšie 4 sú v nejakom zmysle ľahké.
Príklad
Input:
2+3*4
?+?
100-?
max(?,100)
div2(div2(div2(div2(div2(div2(div2(?)))))))
((?*?)+(?*?))*(1-1)
100*100*100*100*100*100*100*100*100*100*100
Output:
14
?
?
100
0
0
10000000000000000000000
Odovzdávanie
Na odovzdávanie sa musíš prihlásiť
Otázky a diskusia
Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.