Cod sursa(job #1497624)

Utilizator rotti321Rotar Mircea rotti321 Data 7 octombrie 2015 00:02:29
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.59 kb
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

ifstream f("cifra.in");

ofstream g("cifra.out");

int n,i,T,d;
short c[10][4],a[100];
string nr;
void genereazaA(short a[])
{
    short suma=0;

    for(int i=0;i<100;i++)
    {
        suma=(suma + c[i%10][i%4])%10;
        a[i]=suma;
    }


}
void genereazaC(short c[10][4])
{
      for(int i=0;i<=9;i++)
        for(int j=0;j<=3;j++)
        {
            if (i==0)
                c[i][j] = 0;
            if (i==1)
                c[i][j] = 1;
            if (i==2)
            {
                if (j==0)
                    c[i][j] =6;
                if (j==1)
                    c[i][j] =2;
                if (j==2)
                    c[i][j] =4;
                if (j==3)
                    c[i][j] =8;
            }
            if (i==3)
            {
                switch(j)
                {
                case 0:
                    c[i][j] = 1;
                    break;
                case 1:
                    c[i][j] = 3;
                    break;
                case 2:
                    c[i][j] = 9;
                    break;
                case 3:
                    c[i][j] = 7;
                }
            }
            if (i==4)
            {
                switch(i%2)
                {
                case 0:
                    c[i][j]= 6;
                    break;
                case 1:
                    c[i][j] = 4;
                    break;
                }
            }
            if (i==5)
            {
                c[i][j] =5;
            }

            if (i==6)
            {
                c[i][j] = 6;
            }
            if (i==7)
            {
                switch(j)
                {
                case 0:
                    c[i][j] = 1;
                    break;
                case 1:
                    c[i][j] = 7;
                    break;
                case 2:
                    c[i][j] = 9;
                    break;
                case 3:
                    c[i][j] = 3;
                }
            }
            if (i==8)
            {
                switch(j)
                {
                case 0:
                    c[i][j] = 6;
                    break;
                case 1:
                    c[i][j] = 8;
                    break;
                case 2:
                    c[i][j] = 4;
                    break;
                case 3:
                    c[i][j] = 2;
                }
            }
            if (i==9)
            {
                switch(j)
                {
                case 0:
                    c[i][j] = 1;
                    break;
                case 1:
                    c[i][j] = 9;
                    break;
                case 2:
                    c[i][j] = 1;
                    break;
                case 3:
                    c[i][j] = 9;
                }
            }
        }
}
void afis()
{
    for(int j=0;j<=3;j++)
    {
        for(int i=0;i<=9;i++)
        {
            g<<c[i][j]<<" ";
        }
        g<<"\n";
    }
}
//progr princ
int main()
{

    f>>T;
    genereazaC(c);
    genereazaA(a);
    int suma=0,nrc;
    for (d=0;d<T;d++)
    {
        f>>nr;
        nrc=nr.length();
        if(nrc>=2)
            suma=a[ ((short)nr[nrc-2]-(short)'0')*10+(short)nr[nrc-1]-(short)'0'];
        else
            suma=a[(short)nr[nrc-1]-(short)'0'];
        g<<suma<<"\n";
    }

 //   f.close();
 //   g.close();
    return 0;
}