Cod sursa(job #1415715)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 5 aprilie 2015 22:46:20
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 4.16 kb
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>

using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
int t;
char n[100];
int uc=0;

void ucifra()
{
    int ultim;
    int x=strlen(n);
    if(n[x-1]=='1')
        {
            uc++;
            uc=uc%10;
        }
    else
     if(n[x-1]=='2')
        {
            if(x>=2)
             ultim=atoi(n+x-2);
            else
                ultim=atoi(n);
            if(ultim%4==1)
            {
                uc+=2;
                uc=uc%10;
            }
            else
                if(ultim%4==2)
            {
                uc+=4;
                uc=uc%10;
            }
            else
            if(ultim%4==3)
            {
                uc+=8;
                uc=uc%10;
            }
            else
                if(ultim%4==0)
            {
                uc+=6;
                uc=uc%10;
            }
        }
    else
    if(n[x-1]=='3')
       {
            if(x>=2)
            ultim=atoi(n+x-2);
            else
                ultim=atoi(n);
            if(ultim%4==1)
            {
                uc+=3;
                uc=uc%10;
            }
            else
                if(ultim%4==2)
            {
                uc+=9;
                uc=uc%10;
            }
            else
            if(ultim%4==3)
            {
                uc+=7;
                uc=uc%10;
            }
            else
                if(ultim%4==0)
            {
                uc+=1;
                uc=uc%10;
            }
        }
    else
    if(n[x-1]=='4')
       {
           ultim=atoi(n+x-1);
           if(ultim%2==0)
           {
               uc+=6;
               uc=uc%10;
           }
           else
           {
               uc+=4;
               uc=uc%10;
           }
       }
    else
    if(n[x-1]=='5')
        {
            uc+=5;
            uc=uc%10;
        }
    else
    if(n[x-1]=='6')
        {
            uc+=6;
            uc=uc%10;
        }
    else
    if(n[x-1]=='7')
       {
            if(x>=2)
            ultim=atoi(n+x-2);
            else
                ultim=atoi(n);
            if(ultim%4==1)
            {
                uc+=7;
                uc=uc%10;
            }
            else
                if(ultim%4==2)
            {
                uc+=3;
                uc=uc%10;
            }
            else
            if(ultim%4==3)
            {
                uc+=9;
                uc=uc%10;
            }
            else
                if(ultim%4==0)
            {
                uc+=1;
                uc=uc%10;
            }
       }
    else
    if(n[x-1]=='8')
    {
         if(x>=2)
            ultim=atoi(n+x-2);
            else
                ultim=atoi(n);
            if(ultim%4==1)
            {
                uc+=8;
                uc=uc%10;
            }
            else
                if(ultim%4==2)
            {
                uc+=4;
                uc=uc%10;
            }
            else
            if(ultim%4==3)
            {
                uc+=2;
                uc=uc%10;
            }
            else
                if(ultim%4==0)
            {
                uc+=6;
                uc=uc%10;
            }
    }
    else
    if(n[x-1]=='9')
        {
           ultim=atoi(n+x-1);
           if(ultim%2==0)
           {
               uc+=1;
               uc=uc%10;
           }
           else
           {
               uc+=9;
               uc=uc%10;
           }
       }
}

void loop()
{
    if(n[strlen(n)-1]=='0')
    {
        int x=strlen(n)-1;
        while((n[x]=='0')&&(x>=1))
            {
                n[x]='9';
                x--;
            }
        if(strlen(n)-1>=1)
            n[x]--;
    }
    else
        n[strlen(n)-1]--;
    if(n[0]=='0')
        strcpy(n,n+1);
}

int main()
{
    f>>t;
    for(int i=1;i<=t;i++)
    {
     f>>n;
     uc=0;
    while(n[0]!=NULL)
    {
    ucifra();
    loop();
    }
    g<<uc<<endl;
    }
    f.close();
    g.close();
    return 0;
}