Cod sursa(job #2981553)

Utilizator pmih12Petrache Mihnea pmih12 Data 18 februarie 2023 10:56:53
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.96 kb
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;

ifstream f("cifra.in");
ofstream g("cifra.out");
int T, gen[101];
char N[105];

void generare()
{
    gen[0]=0;
    for(int i=1;i<=99;++i)
    {
        gen[i]=gen[i-1];
        switch(i%10)
        {
        case 0:
            break;
        case 1:
            gen[i]=(gen[i]%10+1)%10;
            break;
        case 2:
            if(i%4==0) gen[i]=(gen[i]+6)%10;
            else if (i%4==1) gen[i]=(gen[i]+2)%10;
            else if (i%4==2) gen[i]=(gen[i]+4)%10;
            else if (i%3==3) gen[i]=(gen[i]+8)%10;
            break;
        case 3:
            if(i%4==0) gen[i]=(gen[i]+1)%10;
            else if(i%4==1)gen[i]=(gen[i]+3)%10;
            else if(i%4==2)gen[i]=(gen[i]+9)%10;
            else if(i%4==3)gen[i]=(gen[i]+7)%10;
            break;
        case 4:
            if(i&1)gen[i]=(gen[i]+4)%10;
            else gen[i]=(gen[i]+6)%10;
            break;
        case 5:
            gen[i]=(gen[i]+5)%10;
            break;
        case 6:
            gen[i]=(gen[i]+6)%10;
            break;
        case 7:
            if(i%4==0)gen[i]=(gen[i]+1)%10;
            else if(i%4==1)gen[i]=(gen[i]+7)%10;
            else if(i%4==2)gen[i]=(gen[i]+9)%10;
            else if(i%4==3)gen[i]=(gen[i]+3)%10;
            break;
        case 8:
            if(i%4==0)gen[i]=(gen[i]+6)%10;
            else if(i%4==1)gen[i]=(gen[i]+8)%10;
            else if(i%4==2)gen[i]=(gen[i]+4)%10;
            else if(i%4==3)gen[i]=(gen[i]+2)%10;
            break;
        case 9:
            if(i&1)gen[i]=(gen[i]+9)%10;
            else gen[i]=(gen[i]+1)%10;
            break;
        }
    }
}

int main()
{
    generare();
    f>>T;
    while(T--)
    {
        f>>N;
        int lg=strlen(N), nr;
        if (lg==1)
            nr=N[lg-1]-'0';
        else nr=(N[lg-2]-'0')*10+N[lg-1]-'0';
        g<<gen[nr]<<'\n';
    }
    return 0;
}