Cod sursa(job #2914851)

Utilizator alin.gabrielAlin Gabriel Arhip alin.gabriel Data 21 iulie 2022 08:46:30
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <string>
using namespace std;

int lastDigit(string n) {
    int even[10] = {0, 1, 4, 7, 6, 5, 6, 3, 6, 9};
    int odd[10]  = {0, 1, 6, 3, 6, 5, 6, 7, 4, 9};

    int size = n.size();
    int last2d[2];

    if (size < 2)
        last2d[0] = 0;
    else
        last2d[0] = n[size - 2] - '0';
    last2d[1] = n[size - 1] - '0';

    int * p;
    if (last2d[0] % 2 == 0)
        p = even;
    else
        p = odd;

    int last = 7 * last2d[0];

    for (int i = 0; i <= last2d[1]; i++)
        last += p[i];

    return last % 10;
}

int main() {
    ifstream fin("cifra.in");
    ofstream fout("cifra.out");
    int t;
    fin >> t;

    for (int i = 0; i < t; i++) {
        string n;
        fin >> n;
        fout << lastDigit(n) << "\n";
    }

    return 0;
}