Piton


Submit solution

Points: 90 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
Assembly, Awk, C, C++, Java, Perl, Python

ŠKOLSKO NATJECANJE 2015./ Srednja škola, I. podskupina (1. i 2. razred) - 3. zadatak

Piton je strukturirani programski jezik sintaksom donekle sličan popularnom Pythonu.

Ovaj jednostavni jezik ima samo dvije naredbe:

  • Px gdje je x malo slovo engleske abecede: ova naredba ispisuje slovo x.
  • Fk gdje je k prirodni broj manji ili jednak od 20 zapisan bez vodećih nula: ova naredba ponavlja točno k puta blok naredbi koji slijedi.

Blokovi naredbi se specificiraju uvlačenjem naredbi, ali se koristi znak ‘.’ (točka) umjesto uobičajenih razmaka.

Točnije, blokovi i programi u Pitonu se definiraju na sljedeći način:

Za nenegativni cijeli broj N definiramo N-uvučeni blok kao niz linija koji se sastoji od jedne ili više:

  • Naredbe P uvučene s N točaka.
  • Naredbe F uvučene s N točaka nakon koje slijedi točno jedan M-uvučeni blok gdje je M cijeli broj veći od N.

Jedan blok može sadržavati proizvoljan broj P i F naredbi proizvoljnim redoslijedom.

Kao što je gore definirano, nakon svake F naredbe slijedi blok koji mora biti više uvučen nego sama naredba, ti blokovi također mogu sadržavati druge blokove itd.

Program u Pitonu je jedan 0-uvučeni blok (dakle blok koji nije uopće uvučen pa prva linija ne sadrži točku).

U sljedećoj tablici dan je jedan program u Pitonu te njemu ekvivalentni programi u C++-u i u Pascal-u.

Napišite program koji će, za zadani program u Pitonu, pronaći koliko kojih malih slova zadani program ispisuje.

Ulazni​ podaci

U prvom redu nalazi se prirodni broj, L (L ≤ 100) - broj linija u zadanom programu.

Svaki od sljedećih L redova sadrži niz od najviše 80 znakova - jednu liniju zadanog programa.

Jedini znakovi koji se pojavljuju su točke, mala slova engleske abecede, velika slova ‘F’ i ‘P’ te znamenke ‘0’ do ‘9’.

Ulaz je ispravan program u Pitonu prema pravilima iz teksta zadatka koji ispisuje ukupno najviše 10000 znakova.

Izlazni podaci

Potrebno je ispisati koliko se kojih slova pojavljuje u izlazu zadanog programa.

Točnije, potrebno je ispisati onoliko redova koliko se različitih malih slova pojavljuje u izlazu zadanog programa.

Za svako slovo x koje se pojavljuje u izlazu potrebno je ispisati jedan red oblika 'x k', gdje je k ukupan broj pojavljivanja tog slova u izlazu.

Slova trebaju biti ispisana abecednim redoslijedom.

Primjeri test​ podataka

Ulaz
5
Px
Py
F3
..Px
..Pz
Izlaz
x 4
y 1
z 3

Ulaz
9
F3
..Pa
..Pb
..F4
...Pc
..F2
.....Pd
.....Pe
..Pa
Izlaz
a 6
b 3
c 12
d 6
e 6

Ulaz
8
Pa
F3
.F12
..Px
..F20
...F2
....F3
.....Pa
Izlaz
a 4321
x 36


Comments

There are no comments at the moment.