Cod sursa(job #1720840)

Utilizator ze_coderPop Ioan ze_coder Data 23 iunie 2016 17:45:34
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.08 kb
#include <cstring>
#include <fstream>

using namespace std;

int ucif (int n){//returneaza ultima cifra a numarului n^n
   int c, rez;
   rez = 0;
   c = n % 10;
   switch (c) {
    case 0:
        rez = 0;
        break;
    case 1:
        rez = 1;
        break;
    case 2:
        if (n % 4 == 1)
            rez = 2;
        if (n % 4 == 2)
            rez = 4;
        if (n % 4 == 3)
            rez = 8;
        if (n % 4 == 0)
            rez = 6;
        break;
    case 3:
        if (n % 4 == 1)
            rez = 3;
        if (n % 4 == 2)
            rez = 9;
        if (n % 4 == 3)
            rez = 7;
        if (n % 4 == 0)
            rez = 1;
        break;
    case 4:
        if (n % 2 == 0)
            rez = 6;
        else
            rez = 4;
        break;
    case 5:
        rez = 5;
        break;
    case 6:
        rez = 6;
        break;
    case 7:
         if (n % 4 == 1)
            rez = 7;
        if (n % 4 == 2)
            rez = 9;
        if (n % 4 == 3)
            rez = 3;
        if (n % 4 == 0)
            rez = 1;
        break;
    case 8:
         if (n % 4 == 1)
            rez = 8;
        if (n % 4 == 2)
            rez = 4;
        if (n % 4 == 3)
            rez = 2;
        if (n % 4 == 0)
            rez = 6;
        break;
    case 9:
        if (n % 2 == 0)
            rez = 1;
        else
            rez = 9;
        break;
   }
   return rez;
}

int suma(int n){ // s=1^1+2^2+3^3+...+n^n
    int i,s;
    s=0;
    for (i=1;i<=n;i++){
            s = s + ucif(i);
            s %= 10;
    }
    return s;
}
int main()
{
    int i, x, t, l;
    int pred[100];
    string linie;
    for (i=0;i<100;i++)
        pred[i] = suma(i);
    ifstream fin("cifra.in");
    ofstream fout("cifra.out");
    fin >> t;
    for (i=0;i<t;i++){
        fin >> linie;
        l = linie.length();
        if (l==1)
            x = linie[0]-'0';
        else
            x = (linie[l-2]-'0')*10+(linie[l-1]-'0');

        fout << pred[x] << '\n';
    }
    return 0;
}