2417 - Criptare 1
Cerința
Mirel a învățat astăzi la școală la ora de matematică despre baze de numerație. De exemplu a învățat cum să transforme un număr dintr-o bază oarecare în baza zece. Pentru acasă a primit următoarea temă:
Pentru un cuvânt dat, se înlocuiește fiecare literă a acestuia cu numărul de litere de dinaintea sa în alfabet, astfel litera a
devine 0
, litera b
devine 1
, litera c
devine 2
ș.a.m.d. , iar cuvântul dat devine un număr în baza 26
.
Să se transforme acest număr în baza zece.
Date de intrare
În fișierul baza.in
se citește de pe prima linie un cuvânt, format doar din litere mici ale alfabetului englez.
Date de ieșire
În fișierul baza.out
se va afișa pe prima linie un număr, reprezentând valoarea in baza zece a cuvântului din baza 26
.
Restricții și precizări
Lungimea cuvântului <= 50
Exemplu:
baza.in
abz
baza.out
51
Explicație
a
= 0
, b
= 1
, z
= 25
.
abz(26)
= 0 * 26^2 + 1 * 26^1 + 25 * 26^0 = 51(10)
Încărcare soluție
Lipește codul aici
<syntaxhighlight lang="python" line="1"> import sys
sys.stdin = open('setitxt.in', 'r') sys.stdout = open('setitxt.out', 'w')
f = [[[[0 for _ in range(10)] for _ in range(10)] for _ in range(10)] for _ in range(10)] s = input() def poz(ch):
i = 0 while s[i] != '\0': if s[i] == ch: return i i += 1
while True:
line = input() if not line: break a, b, c, d = line.split() f[poz(a)][poz(b)][poz(c)][poz(d)] += 1
for i in range(10):
for j in range(10): for k in range(10): for t in range(10): if f[i][j][k][t]: for g in range(f[i][j][k][t]): print(s[i] + s[j] + s[k] + s[t])
</syntaxhighlight>