333
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 ≤ 261 ≤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;
}
Comentarii