Cod sursa(job #1289829)

Utilizator lazandrei19Laza Andrei lazandrei19 Data 10 decembrie 2014 13:11:42
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.71 kb
#include <fstream>
#include <iostream>


using namespace std;
int u=0;
void rezolva(int a)
{
    if(a==0) return;
    int c=a%10;
    switch(c)
    {
    case 1:
        u+=1;
        rezolva(a-1);
        break;
    case 2:
        switch(a%4)
        {
        case 1:
            u+=2;
            rezolva(a-1);
            break;
        case 2:
            u+=4;
            rezolva(a-1);
            break;
        case 3:
            u+=8;
            rezolva(a-1);
            break;
        default:
            u+=6;
            rezolva(a-1);
            break;
        }
        break;
    case 3:
        switch(a%4)
        {
        case 1:
            u+=3;
            rezolva(a-1);
            break;
        case 2:
            u+=9;
            rezolva(a-1);
            break;
        case 3:
            u+=7;
            rezolva(a-1);
            break;
        default:
            u+=1;
            rezolva(a-1);
            break;
        }
        break;
    case 4:
        switch(a%4)
        {
        case 1:
            u+=4;
            rezolva(a-1);
            break;
        default:
            u+=6;
            rezolva(a-1);
            break;
        }
        break;
    case 5:
        u+=5;
        rezolva(a-1);
        break;
    case 6:
        u+=6;
        rezolva(a-1);
        break;
    case 7:
        switch(a%4)
        {
        case 1:
            u+=7;
            rezolva(a-1);
            break;
        case 2:
            u+=9;
            rezolva(a-1);
            break;
        case 3:
            u+=3;
            rezolva(a-1);
            break;
        default:
            u+=1;
            rezolva(a-1);
            break;
        }
        break;
    case 8:
        switch(a%4)
        {
        case 1:
            u+=8;
            rezolva(a-1);
            break;
        case 2:
            u+=4;
            rezolva(a-1);
            break;
        case 3:
            u+=2;
            rezolva(a-1);
            break;
        default:
            u+=6;
            rezolva(a-1);
            break;
        }
        break;
    case 9:
        switch(a%2)
        {
        case 1:
            u+=9;
            rezolva(a-1);
            break;
        default:
            u+=1;
            rezolva(a-1);
            break;
        }
        break;
    default:
        rezolva(a-1);
        break;
    }
    return;
}

int main()
{
    int n, a;
    ifstream in("cifra.in");
    ofstream out("cifra.out");
    in>>n;
    for(int i=0; i<n; i++)
    {
        in>>a;
        rezolva(a);
        out<<u%10<<endl;
        u=0;
    }
    return 0;
}