Cifrul Afin este un cifru unde fiecare literă este înlocuită cu o altă literă printr-o operație matematica. Fiecărei litere i se asociază un cod: a-0
, b-1
, c-2
, … z-25
. De asemenea, mai avem două numere a
și b
, numite chei. Fiecare literă se înlocuiește cu litera care are codul egal cu (a*x+b) mod 26
, unde x
este codul literei. Pentru anumite perechi de numere a
și b
rezultatul expresiei (a*x+b) mod 26
poate fi același pentru valori diferite ale lui x
; p pereche a b
cu această proprietate se consideră ineficientă.
Cerinta
Dându-se valoarea celor două chei și un mesaj criptat să se afișeze mesajul decriptat. Dacă a
și b
formează o pereche ineficientă atunci se afișează mesajul -1
.
Date de intrare
Fișierul de intrare afin1.in
conține pe prima linie numerele a b
iar pe a doua linie mesajul criptat.
Date de ieșire
Fișierul de ieșire afin1.out
va conține pe prima linie mesajul decriptat sau numarul -1
daca a
si b
formeaza o pereche ineficienta.
Restricții și precizări
1 ≤
lungimea mesajului≤ 10000
Exemplul 1:
afin1.in
17 20 fekhfmbabfkkh
afin1.out
twentyfifteen
Exemplul 2;
afin1.in
14 19 jvphxbxnzrtrldjplnzffdtvhbvhbnrzxpjrpnzlltfthbvdf
afin1.out
-1