2417 - Criptare 1
Cerința[edit | edit source]
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[edit | edit source]
Î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[edit | edit source]
Î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[edit | edit source]
Lungimea cuvântului <= 50
Exemplu:[edit | edit source]
baza.in
abz
baza.out
51
Explicație[edit | edit source]
a
= 0
, b
= 1
, z
= 25
.
abz(26)
= 0 * 26^2 + 1 * 26^1 + 25 * 26^0 = 51(10)
Încărcare soluție[edit | edit source]
Lipește codul aici[edit | edit source]
<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>