expresii

Time limit: 0.5s Memory limit: 256MB Input: expresii.in Output: expresii.out

Definim o expresie ca fiind un șir de caractere ee care respectă una dintre următoarele:

  • e=e = x;
  • ee reprezintă un număr natural (constantă); (ex. e{e \in \{1,, 2,, 200,}, \dots\})
  • e=[e1,e2]e = [e_1, e_2] sau e=(e1,e2)e = (e_1, e_2), unde e1e_1, e2e_2 sunt (sub-)expresii. Aici, (,)(\cdot, \cdot) semnifică cel mai mare divizor comun al două numere, iar [,][\cdot, \cdot] semnifică cel mai mic multiplu comun al două numere. De exemplu, avem că (6,8)=2(6, 8) = 2, [6,8]=24[6, 8] = 24.


De exemplu, x, 13, (5,2), [3,[x,(14,1)]], [x,x] sunt expresii, pe când 0, (5, 2, 3), [x, 2) nu sunt expresii. Observați că expresiile nu conțin niciodată spații.

Pentru o expresie ee dată și un număr natural pozitiv aa, definim eval(e,a)\textit{eval}(e, a) ca fiind rezultatul evaluării expresiei ee, unde tuturor aparițiilor lui xx le vor fi asociate valoarea aa. De exemplu:

eval(eval(([x,3],[x,2]),10)=, 10) = ([10,3],[10,2]) == (30,10) == 10

eval(eval((6,14),5)=, 5) = (6, 14) == 2

eval(eval(x,12)=, 12) = 12


Dându-se o expresie ee și două numere naturale a,ba, b, să se calculeze eval(e,a)+eval(e,a+1)++eval(e,b)eval(e, a) + eval(e, a + 1) + \ldots + eval(e, b).

Rezultatul se va afișa modulo 109+710^9 + 7.

Date de intrare

Fișierul de intrare expresii.in conține pe prima linie o expresie ee. Pe a doua linie se găsesc numerele a,ba, b, separate prin spațiu.

Date de ieșire

Fișierul de ieșire expresii.out va conține un număr întreg reprezentând valoarea cerută.

Restricții și precizări

  • În tabelul ce urmează, e|e| reprezintă lungimea expresiei ee (numărul de caractere), iar max(e)\max(e) reprezintă constanta de valoare maximă din ee (sau 00, dacă ee nu conține constante).
# Punctaj Restricții
1 9 1ab10001 \leq a \leq b \leq 1\,000 și e=(x,t)e = (x, t), unde 1t10001 \leq t \leq 1\,000
2 10 1ab10001 \leq a \leq b \leq 1\,000, 1e10001 \leq \lvert e \rvert \leq 1\,000, 0max(e)10000 \leq \max(e) \leq 1\,000 și expresia ee nu conține paranteze pătrate []
3 15 1ab401 \leq a \leq b \leq 40, 1e10001 \leq \lvert e \rvert \leq 1\,000, 0max(e)400 \leq \max(e) \leq 40
4 17 1ab1051e1050max(e)1051 \leq a \leq b \leq 10^5 \quad 1 \leq \lvert e \rvert \leq 10^5 \quad 0 \leq \max(e) \leq 10^5 și toate constantele din ee sunt puteri de 22
5 17 1ab10001e10000max(e)10001 \leq a \leq b \leq 1\,000 \quad 1 \leq \lvert e \rvert \leq 1\,000 \quad 0 \leq \max(e) \leq 1\,000
6 10 1a=b1000001e2500000max(e)1000001 \leq \bm{a = b} \leq 100\,000 \quad 1 \leq \lvert e \rvert \leq 250\,000 \quad 0 \leq \max(e) \leq 100\,000
7 14 1ab1000001e2500000max(e)1000001 \leq a \leq b \leq 100\,000 \quad 1 \leq \lvert e \rvert \leq 250\,000 \quad 0 \leq \max(e) \leq 100\,000
8 8 1ab2500001e20000000max(e)2500001 \leq a \leq b \leq 250\,000 \quad 1 \leq \lvert e \rvert \leq 2\,000\,000 \quad 0 \leq \max(e) \leq 250\,000

Exemplul 1

expresii.in

(x,6)
4 4

expresii.out

2

Explicație

Pentru primul exemplu, (4,6)=2(4, 6) = 2.

Exemplul 2

expresii.in

[x,6]
1 6

expresii.out

66

Explicație

Pentru al doilea exemplu, [1,6]+[2,6]+[3,6]+[4,6]+[5,6]+[6,6]=6+6+6+12+30+6=66[1, 6] + [2, 6] + [3, 6] + [4, 6] + [5, 6] + [6, 6] = 6 + 6 + 6 + 12 + 30 + 6 = 66.

Exemplul 3

expresii.in

(12,(x,(8,6)))
3 6

expresii.out

6

Exemplul 4

expresii.in

([x,3],[x,2])
10 10

expresii.out

10

Exemplul 5

expresii.in

[([(x,5),2],[12,5]),(x,16)]
28 33

expresii.out

36

Explicație

Pentru ultimul exemplu, răspunsurile pentru fiecare valoare din interval sunt 4,2,10,2,16,24, 2, 10, 2, 16, 2 (în această ordine).

Atenție! Exemplele 22, 33, 44 și 55 nu respectă constrângerile subtask-ului 11. Exemplele 22, 44 și 55 nu respectă constrângerile subtask-ului 22. Exemplele 22, 33 și 55 nu respectă constrângerile subtask-ului 66.

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