Fygon#7617

Fygon

1 saniyə
128 meqabayt
Çox çətin

Fredrik — gənc proqramçıdır. O, tapa biləcəyi bütün proqramlaşdırma yarışmalarında iştirak edir və həmişə öz sevimli proqramlaşdırma dili olan Fygon-da yazır. Təəssüf ki, o, tez-tez Time Limit Exceeded vердикti alır, hətta alqoritmi asimptotik olaraq optimal olduqda belə. Səbəb odur ki, Fygon interpretatoru çox yavaş işləyir. Buna baxmayaraq, Fredrik Fygon-u o qədər sevir ki, həllərini vaxt limitinə sığdırmaq üçün asimptotik olmayan optimallaşdırmalara əl atır. İşini asanlaşdırmaq üçün o, sizdən onun Fygon proqramının yerinə yetirdiyi əməliyyatların dəqiq sayını hesablayan bir proqram yazmağınızı xahiş edir.

Sadəlik üçün qəbul edək ki, Fygon-da yalnız iki növ operator var. Birincisi — lag, demək olar ki, hər hansı digər operatoru əvəz edə bilən. İkincisi — for dövrü:

for <variable> in range (<limit>):
    <body>

Burada <variable> -dan <limit> -ə qədər bütün qiymətləri alır. Fygon-da <variable> -dan -ə qədər kiçik latın hərfidir, <limit> isə ya əvvəllər təyin edilmiş <variable> dəyişəni, ya da müsbət tam ədəd sabitidir. Dövrün gövdəsi <body> dörd boşluq girintisi ilə yazılır və ən azı bir operator ehtiva edir.

Proqram giriş məlumatını dəyişənində alır. Bu dəyişənin xüsusi mənası var və dövr dəyişəni kimi istifadə edilə bilməz.

Sizin tapşırığınız — verilmiş Fygon proqramının yerinə yetirdiyi lag əməliyyatlarının sayını -dən asılı olaraq ifadə edən düstur tapmaqdır.

Giriş

Fygon-da yazılmış proqramı ehtiva edir. Heç bir iki dövr eyni dəyişəni sayğac kimi istifadə etmir. range daxilində istifadə olunan hər bir dəyişən ya -dir, ya da xarici dövrlərdən birində elan edilmiş dəyişəndir.

Proqram ən çoxu operator ehtiva edir, onlardan ən çoxu -sı dövrdür. Bütün tam ədəd sabitləri -dən -a qədər (daxil olmaqla) diapazonda yerləşir.

Çıxış

Yerinə yetirilən lag əməliyyatlarının sayı üçün -dən asılı düsturu çıxarın. Düsturun uzunluğu (boşluqlar nəzərə alınmadan) simvolu aşmamalıdır və düstur aşağıdakı qrammatikaya uyğun olmalıdır:

<Expression> ::= <Product> (('+' | '-') <Product>)*
<Product>    ::= <Value> ('*' <Value>)*
<Value>      ::= 'n' | <Number> | '-' <Value> | '(' <Expression> ')'
<Number>     ::= ['0'..'9']+ ('/' ['0'..'9']+)?

Nümunələr

Nümunə 1

Loading
Loading