2417 - Criptare 1

From Bitnami MediaWiki

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>