Afin
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.
Cerinta
Dându-se valoarea celor două chei și un mesaj să se afișeze mesajul criptat.
Date de intrare
Fișierul de intrare afin.in
conține pe prima linie numerele a b
iar pe a doua linie un mesaj.
Date de ieșire
Fișierul de ieșire afin.out
va conține pe prima linie mesajul criptat.
Restricții și precizări
1 ≤ a , b ≤ 26
1 ≤
lungimea șirului≤10000
- mesajul va conține doar litere mici ale alfabetului englez
Exemplu
afin.in
17 20 twentyfifteen
afin.out
fekhfmbabfkkh
#include <bits/stdc++.h> using namespace std; ifstream cin("afin.in"); ofstream cout("afin.out"); char s[10001]; int main(){ int a, b; cin >> a >> b; cin >> s; int i = 0; while(s[i]){ int x = s[i] - 'a'; int d = (a * x + b) % 26; d += 'a'; s[i] = (char) d; i++; } cout << s; return 0; }