Cod sursa(job #2308199)

Utilizator skoda888Alexandru Robert skoda888 Data 26 decembrie 2018 16:25:28
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb

#include <iostream>
#include <fstream>
#include <cstring>

const int U[21] = {0, 1, 5, 2, 8, 3, 9, 2, 8, 7, 7, 8, 4, 7, 3, 8, 4, 1, 5, 4, 4};

int last_digit(std::string huge_number){
    if(huge_number.size() == 1){
        return U[huge_number[0] - 48];
    }
    int last_two_digits = huge_number[huge_number.size() - 1] - 48  + (huge_number[huge_number.size() - 2] - 48) * 10;
    //std::cout << last_two_digits << '\n';
    if(last_two_digits <= 20){
        return U[last_two_digits];
    }
    else{
        int div20 = last_two_digits / 20;
        return (4 * div20 + U[last_two_digits - div20 * 20]) % 10;
    }
}

int main()
{
    std::ifstream in("cifra.in");
    std::ofstream out("cifra.out");

    //number of cases
    int T;
    in >> T;

    //read huge numbers and determine the last digit as requested
    in.get();
    while(--T >= 0){
        std::string huge_number;
        std::getline(in, huge_number);
        out << last_digit(huge_number) << '\n';
    }
    return 0;
}