Cod sursa(job #1678820)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 7 aprilie 2016 15:44:03
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
# include <iostream>
# include <cstdio>
# include <fstream>
# include <cmath>
#include <cstring>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");

int t;
char n[120];
int sol[102];

struct cif
{
    int nr;
    short c[6];
} cif[9];

int main()
{
    int i;
    int len;
    f>>t; f.get();
    cif[0].nr=1; cif[0].c[0]=0;
    cif[1].nr=1; cif[1].c[0]=1;
    cif[2].nr=4; cif[2].c[1]=2; cif[2].c[2]=4; cif[2].c[3]=8; cif[2].c[0]=6;
    cif[3].nr=4; cif[3].c[1]=3; cif[3].c[1]=9; cif[3].c[3]=7; cif[3].c[0]=1;
    cif[4].nr=2; cif[4].c[1]=4; cif[4].c[0]=6;
    cif[5].nr=1; cif[5].c[0]=5;
    cif[6].nr=1; cif[6].c[0]=6;
    cif[7].nr=4; cif[7].c[1]=7; cif[7].c[2]=9; cif[7].c[3]=3; cif[7].c[0]=1;
    cif[8].nr=2; cif[8].c[1]=8; cif[8].c[0]=6;
    cif[9].nr=2; cif[9].c[1]=9; cif[9].c[0]=1;

    for(i=1;i<=99;i++)
    {
        sol[i]=sol[i-1]+cif[i%10].c[ i%cif[i%10].nr ];
        if(sol[i]>=10) sol[i]-=10;
    }
    for(;t;t--)
    {
        f.get(n,120); f.get();
        len=strlen(n);
        if(len>1)
        g<<sol[(n[len-2]-'0')*10 + n[len-1]-'0']<<'\n';
        else g<<sol[n[len-1]-'0']<<'\n';
    }
    f.close();
    g.close();
    return 0;
}