Cod sursa(job #1962325)

Utilizator dragos231456Neghina Dragos dragos231456 Data 11 aprilie 2017 18:20:07
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
int t,a[11][5]={0,0,0,0,0,0,1 ,1, 1, 1,0,2, 4, 8, 6,0,3, 9, 7, 1,0,4, 6, 4, 6,0,5, 5, 5, 5,0,6, 6, 6, 6,0,7, 9, 3, 1,0,8, 4, 2, 6,0,9, 1, 9, 1};
int x,r,rez,d,k;
string s;
int main()
{
    f>>t; getline(f,s);
    for(int i=1;i<=t;++i)
    {
        getline(f,s);
        rez=0;
        r=s[s.size()-1]-'0';
        if(s.size()>=3)
        {
            d=s[s.size()-3]-'0';
        }
        if(s.size()>=2)
        {
            d*=10;
            d+=(s[s.size()-2]-'0');
        }
        d=d%10;
        k=d/2;
        d=d%2;
        for(int i=1;i<=9;++i)
        {
            for(int j=1;j<=4;++j)
            {
                if(i%2==j%2)
                {
                    rez+=a[i][j]*k;
                }
            }
        }
        if(d==0)
        {
            for(int i=1;i<=r;++i)
            {
                rez+=a[i][i%4];
                if(i%4==0) rez+=a[i][4];
            }
        }
        else
        {
            for(int i=1;i<=r;++i)
            {
                for(int j=1;j<=4;++j)
                {
                    if(i%2==j%2)
                    {
                        rez+=a[i][j];
                    }
                }
            }
            for(int i=r+1;i<=9;++i)
            {
                rez+=a[i][i%4];
                if(i%4==0) rez+=a[i][4];
            }

        }
        rez%=10;
        g<<rez<<'\n';
    }
    return 0;
}