Cod sursa(job #1720830)

Utilizator ze_coderPop Ioan ze_coder Data 23 iunie 2016 17:20:49
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.14 kb
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>
#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;
    int pred[100];
    string linie;
    for (i=0;i<100;i++)
        pred[i] = suma(i);
    ifstream fin("cifra.in");
    ofstream fout("cifra.out");
    std::getline(fin, linie);
    while (std::getline(fin, linie)){
        if (linie.length()>1)
            linie.erase(0, linie.length()-2);
       std::istringstream ss(linie);
       ss >> x;
       fout << pred[x % 100] << endl;

    }






    return 0;
}