Cod sursa(job #1864625)

Utilizator andrew_assassin789Andrei Manea andrew_assassin789 Data 31 ianuarie 2017 21:25:49
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>
#include <cstring>
using namespace std;
unsigned int lasd(unsigned int a, unsigned int x)
{
    a%=10;
    if ((a==0)||(a==1)||(a==5)||(a==6))
        return a;
    if (a==4)
    {
        if (((x%4)%2)==1) return 4;
        return 6;
    }
    if (a==9)
    {
        if (((x%4)%2)==1) return 9;
        return 1;
    }
    if (a==3)
    {
        if (x%4==0) return 1;
        if (x%4==1) return 3;
        if (x%4==2) return 9;
        if (x%4==3) return 7;
    }
    if (a==2)
    {
        if (x%4==0) return 6;
        if (x%4==1) return 2;
        if (x%4==2) return 4;
        if (x%4==3) return 8;
    }
    if (a==7)
    {
        if (x%4==0) return 1;
        if (x%4==1) return 7;
        if (x%4==2) return 9;
        if (x%4==3) return 3;
    }
    if (a==8)
    {
        if (x%4==0) return 8;
        if (x%4==1) return 4;
        if (x%4==2) return 2;
        if (x%4==3) return 6;
    }
}
unsigned int r[105];
int main()
{
    ifstream fin("cifra.in");
    ofstream fout("cifra.out");
    unsigned int n,T,x,j;
    char *s;s=new char[105];
    for (j=1;j<=100;j++)
    {
        r[j]=(r[j-1]+lasd(j,j))%10;
    }
    fin>>T;
    for (;T;T--)
    {
        fin.get();
        fin.get(s,105);
        n=strlen(s);
        if (n==1) x=s[0]-'0';
        else x=(s[n-2]-'0')*10+(s[n-1]-'0');
        fout<<r[x]<<'\n';
    }
    fin.close();
    fout.close();
    return 0;
}