Revizia anterioară Revizia următoare
| Fișierul intrare/ieșire | gigel.in, gigel.out | Sursă | imaginație proprie |
|---|---|---|---|
| Autor | Theodor-Ioan Pîrnog | Adăugată de |
|
| Timp de execuție pe test | 0.1 sec | Limită de memorie | 16384 KB |
| Scorul tău | N/A | Dificultate |
Vezi soluțiile trimise | Statistici
Gigel (clasa a 10-a)
Gigel a găsit prin sertarul bunicii un bilețel pe care scria o formulă de decodificare a unui șir de caractere s de lungime cel mult 1.000.000 ce conține numere naturale nenule (le vom nota cu xk), [ ] (paranteze pătrate), { } (acolade), < > (paranteze unghiulare) și , (virgulă) . Acest șir are următoarele reguli de decodificare pentru fiecare subșir sk care începe cu [, { sau < și se termină cu ], } sau >:
1) Dacă sk = “[x1, x2, x3, ..., xp]”, atunci sk se transformă într-un număr întreg t = (x1^-1^ + x2^-1^ + x3^-1^ + ... + xp^-1^)$% 773; (suma inverselor modulare ale numerelor $x1, x2, x3, ..., xp față de 773, modulo 773)
2) Dacă sk = “{x1, x2, x3, ..., xp}”, atunci sk se transformă într-un număr $t = cmmmc(x1, x2, x3, ..., xp)$% 773;
3) Dacă sk = “
La final Gigel însumează numerele rămase.
Ajutați-l pe Gigel să decodifice șirul găsit pentru a vă răsplăti cu 100 de puncte!
Date de intrare
Fișierul de intrare gigel.in va conține pe prima linie șirul s.
Date de ieșire
Fișierul de ieșire gigel.out va conține suma numerelor rămase după decodificarea șirului s.
Restricții și precizări
- 1 ≤ xk ≤ 20, pentru orice xk;
- 1 ≤ lungimea șirului s ≤ 1.000.000;
- Notăm cu cmmdc(a, b) cel mai mare divizor comun al numerelor a și b, iar cu cmmmc(a, b) cel mai mic multiplu comun al numerelor a și b;
- Se garantează că fiecare operație nu depășeste tipul de date unsigned long long;
- Inversul modular al unui număr x se notează cu x^-1^ și este egal cu numărul a cu proprietatea că x * a mod M = 1.
- Se garantează că expresia este corectă.
Exemplu
| gigel.in | gigel.out | Explicație |
|---|---|---|
| 1,<2,{12,4},[9,{4,5,9}]>,2 |
21 |
{12,4} = 12 (operația 2)
{4,5,9} = 180 (operația 2)
Șirul se va transforma în: 1,<2,12,[9,180]>,2
[9,180] = 13, deoarece inversul modular al lui 9 față de 773 este 86, iar inversul modular al lui 180 față de 773 este 700, deci (86 + 700) % 773 = 13 (operația 1) <2,12,13> = 18 (operația 3) Șirul se va transforma în: 1,18,2 Deci, rezultatul va fi: 1 + 18 + 2 = 21. |

Poți vedea testele pentru această problemă accesând