gigel

Time limit: 0.17s
Memory limit: 64MB
Input:
Output:

Gigel a găsit prin sertarul bunicii un bilețel pe care scria o formulă de decodificare a unui șir de caractere ss de lungime cel mult 1 000 0001\ 000\ 000
ce conține numere 20\leq 20 (le vom nota cu xkx_k), [ ][\ ], { }\{\ \}, < ><\ > și ,,. Acest șir are următoarele reguli de decodificare:

  1. Dacă s=[x1,x2,x3,...,xp]s = [x_1, x_2, x_3, ..., x_p], atunci ss se transformă într-un număr întreg t=(1x1+1x2+...+1xp)%773t = (\frac{1}{x_1} + \frac{1}{x_2} + ... + \frac{1}{x_p}) \% 773 (suma inverselor modulare ale numerelor x1x_1, x2x_2, x3x_3, ..., xpx_p faţă de 773773, modulo 773773;
  2. Dacă s={x1,x2,x3,...,xp}s = \{x_1, x_2, x_3, ..., x_p\}, atunci ss se transformă într-un număr t=cmmmc(x1,x2,...,xp)%773t = cmmmc(x_1, x_2, ..., x_p) \% 773;
  3. Dacă s= <x1,x2,x3,...,xp>s =\ < x_1, x_2, x_3, ..., x_p>, atunci ss se transformă într-un număr tt care este egal cu câte numere qq sunt mai mici strict decât S=(x1+x2+...+xp)%773S = (x_1 + x_2 + ... + x_p) \% 773 și pentru care cmmdc(S,q)=1cmmdc(S, q) = 1.

La final Gigel însumează numerele rămase.

Cerința

Ajutați-l pe Gigel să decodifice șirul găsit pentru a vă cinsti cu o shaorma!

Date de intrare

Se citește șirul ss.

Date de ieșire

Se afișează suma numerelor rămase după decodificarea șirului ss.

Restricții și precizări

  • 11 \leq lungimea șirului s1 000 000s \leq 1\ 000\ 000;
  • Numerele regăsite în șir sunt naturale, 1\geq 1 și 20\leq 20;
  • Notăm cu cmmdc(a,b)cmmdc(a, b) cel mai mare divizor comun al numerelor aa și bb, iar cu cmmmc(a,b)cmmmc(a, b) cel mai mic multiplu comun al numerelor aa și bb;
  • Se garantează că fiecare operație nu depășeste tipul de date unsigned long long;
  • Se garantează că expresia este corectă;
  • Testul 0 este exemplul de mai jos.

Exemplu

stdin

1,<2,{12,4},[9,{4,5,9}]>,2

stdout

21

Explicație

{12,4} = 12.

{4,5,9} = 180.

Șirul se va transforma în: 1,<2,12,[9,180]>,2.

[9,180] = 13, deoarece inversul modular al lui 99 faţă de 773773 este 8686, iar inversul modular al lui 180180 faţă de 773773 este 700700, deci (86+700)%773=13(86 + 700) \% 773 = 13.

<2,12,13> = 18.

Deci, rezultatul va fi: 1 + 18 + 2 = 21.

Problem info

ID: 280

Editors:

Author:

Source: Concursul SOLINFO.ro Runda 1

Tags:

Concursul SOLINFO.ro Runda 1

Log in or sign up to be able to send submissions!