Cod sursa(job #1854887)

Utilizator sli1987Marin Cristian sli1987 Data 23 ianuarie 2017 12:13:17
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
    ifstream in ("cifra.in");
    short T;
    in >> T;
    string temp;
    int numE, sum;
    ofstream out ("cifra.out");
    const short sq[4] = {4, 6, 6, 4};
    const short cu[5] = {1, 7, 5, 3, 9};
    const short ze[9] = {7, 4, 1, 8, 5, 2, 9, 6, 3};
    //const short qo[9] = {1, 7, 0, 6, 1, 7, 4, 8, 7};
    //const short qe[9] = {1, 5, 2, 8, 3, 9, 2, 8, 7};
    for (int i = 0; i < T; i++)
    {
        sum = 0;
        in >> temp;
        if ((int)temp.length() - 2 >= 0)
            temp = temp.substr(temp.length() - 2);
        numE = atoi(temp.c_str());
        for (int j = 1; j <= numE % 10; j++)
            switch ((numE - numE % 10 + j) % 4)
            {
                case 0: sum += 6; break;
                case 1: sum += j; break;
                case 2: sum += sq[j / 2 - 1]; break;
                case 3: sum += cu[(j - 1) / 2]; break;
            }
        /*switch (numE % 10)
        {
            case 1: sum = 1; break;
            case 2: if (numE % 4 == 0) sum = 7; else sum = 5; break;
            case 3: if (numE % 4 == 1) sum = 0; else sum = 2; break;
            case 4: if (numE % 4 == 2) sum = 6; else sum = 8; break;
            case 5: if (numE % 4 == 3) sum = 1; else sum = 3; break;
            case 6: if (numE % 4 == 0) sum = 7; else sum = 9; break;
            case 7: if (numE % 4 == 1) sum = 4; else sum = 2; break;
            case 8: sum = 8; break;
            case 9: sum = 7; break;
        }*/
        if (numE >= 10)
        {
            /*if (((numE / 10) * 10) % 4 == 3)
                sum = qo[numE % 10];
            else
                sum = qe[numE % 10];*/
            out << (sum + ze[numE / 10 - 1]) % 10 << endl;
        }
        else
            out << /*qe[numE % 10]*/ sum % 10 << endl;
    }
    in.close();
    out.close();
    return 0;
}