# PBinfo #3310 – afin – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

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

## Cod sursă C++

```cpp
#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;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3310)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3310/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3310/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
