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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema afin:
#include <fstream>
using namespace std;
char v[130];
int main()
{
ifstream cin ("afin.in");
ofstream cout ("afin.out");
int a,b;
char c;
cin>>a>>b;
for(char i='a';i<='z';i++)
{
int val=(i-'a');
v[(int)(i)]=(char)((a*val+b)%26+'a');
}
while(cin>>c)
{
cout<<v[(int)(c)];
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3310 afin
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3310 afin de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!