Cod sursa(job #1842843)

Utilizator lpsasuSasu Alexandru lpsasu Data 7 ianuarie 2017 17:46:59
Problema Cifra Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <stdio.h>
using namespace std;

int c[10][4],d[10][3],n,j,i,x,p;

FILE *in , *out;

int read()
{
    char a='a',b='0',c='0';
    while(c>='0'&&c<='9')
    {
        a=b;
        b=c;
        c=fgetc(in);
    }
        return ((int)(a)-48)*10+((int)(b)-48);

}

int main()
{
    in=fopen("cifra.in","r");
    out=fopen("cifra.out","w");
    for(i=0;i<10;i++)
    {
        c[i][0]=i;
        int x=i;
        for(j=1;j<4;j++)
        {
            c[i][j]=x*i%10;
            x=c[i][j];
        }
    }
    for(i=0;i<10;i++)
    {
        d[i][1]=c[i][(i-1)%4];
        d[i][2]=c[i][(i+9)%4];
        d[i][0]=(d[i][2]+d[i][1])%10;
        cout<<d[i][0]<<' '<<d[i][1]<<' '<<d[i][2]<<'\n';
    }
    cout<<'\n';
    fscanf(in,"%d",&n);
    fgetc(in);
    for(i=1;i<=n;i++)
    {
        x=read();
        p=0;
        for(int j=1;j<=9&&j<=x;j++)
        {
            if(((x-j)/10+1)%2==0)
                p+=((((x-j)/10+1)/2)*d[j][0]);
            else
                p+=((((x-j)/10+1)/2)*d[j][0])+d[j][1];
            cout<<j<<' '<<p<<'\n';

        }
        fprintf(out,"%d\n",p%10);
        cout<<'\n';
    }
}