Cod sursa(job #1231881)

Utilizator hopingsteamMatraguna Mihai-Alexandru hopingsteam Data 21 septembrie 2014 18:02:32
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include    <iostream>
#include    <fstream>
#include    <cstring>

using namespace std;

ifstream fin ("cifra.in");
ofstream fout ("cifra.out");

int SUM[105]= {    0,1,5,2,8,3,9,2,8,7,7,
                8,4,7,3,8,4,1,5,4,4,5,
                9,6,2,7,3,6,2,1,1,2,8,
                1,7,2,8,5,9,8,8,9,3,0,
                6,1,7,0,6,5,5,6,2,5,1,
                6,2,9,3,2,2,3,7,4,0,5,
                1,4,0,9,9,0,6,9,5,0,6,
                3,7,6,6,7,1,8,4,9,5,8,
                4,3,3,4,0,3,9,4,0,7,1,
                0,0};
                      
int N, len;
char Nr[105];

// - '0' chestia aia de la Lupse cu convertirea in numar <3

int solve()
{
    int X;
    len = strlen(Nr);
    if(len == 1){ //One "cifra"
        fout << SUM[Nr[0] - '0'];
        return 0;
    }
    if(len == 2){ // Two "cifra" - ideea e sa formam efectiv numarul si sa afisam ultima cifra
        fout << SUM[ (Nr[0] - '0') * 10 + (Nr[1] - '0') ];
        return 0;
    }
    if(len >= 3){ // Here comes the shit.. > . >
        // Formam ultimele 3 cifre, le luam pe ultimele 2
        X = 0;
        for(int i = len - 3; i < len; i++)
        {
            X = X * 10 + (Nr[i] - '0');
        }
        fout << SUM[X % 100];
    }
    return 0;
}

void read()
{
    fin >> N;
    for(int i = 1; i <= N; i++)
    {
        fin >> Nr;
        solve(); fout << "\n";
    }
}

int main()
{
    read();
    return 0;
}