Cod sursa(job #1542891)

Utilizator eJayGavrilovici Eugen eJay Data 5 decembrie 2015 19:31:32
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
/*
Gigel, fiind plictisit, se juca in timpul orei de matematica, desenand pe o foaie. Din pacate, profesorul l-a vazut si i-a spus ca ii pune nota 4 daca nu rezolva urmatoarea problema: pentru o valoarea N data trebuie sa determine ultima cifra a sumei 11 + 22 + ... + NN.
Cerinta

Scrieti un program care sa-l ajute pe Gigel si sa determine ultima cifra a acestei sume pentru T valori date ale lui N.
Date de intrare

Pe prima linie din fisierul cifra.in se va afla numarul T. Pe urmatoarele T linii se vor gasi valori ale lui N pentru care trebuie gasit raspunsul.
Date de iesire

Pe cele T linii ale fisierului cifra.out se vor gasi raspunsurile pentru valorile lui N date in fisierul de intrare.

Restrictii

    1 ≤ T ≤ 30.000
    ATENTIE! 1 ≤ N < 10100. Numerele trebuie citite ca siruri de caractere!
    Se acorda punctaj pentru un test doar daca toate cele T valori din fisierul de iesire sunt corecte

Exemplu
cifra.in	cifra.out
5
1
2
3
4
5
	1
5
2
8
3
Explicatii

11 = 1
11 + 22 = 1 + 4 = 5
11 + 22 + 33 = 1 + 4 + 27 = 32
11 + 22 + 33 + 44 = 1 + 4 + 27 + 256 = 288
11 + 22 + 33 + 44 + 55 = 1 + 4 + 27 + 256 + 3125 = 3413
*/

#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;

int main()
{
    int i=0,n,x,k,suma;
    ifstream f("cifra.in");
    ofstream g("cifra.out");
    f>>n;
    while(i<n)
        {f>>x;
        k=1;
        suma=0;
        while(k<=x)
            {suma=suma+pow(k,k);
            k++;}
        g<<suma%10<<endl;
        i++;
        }
    f.close();g.close();
    return 0;
}