Cod sursa(job #830866)

Utilizator TheBestPessimistCristian Viorel Pasat TheBestPessimist Data 7 decembrie 2012 19:54:08
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
/*
    http://infoarena.ro/problema/cifra
*/

#include <iostream>
#include <fstream>
#include <string>

using namespace std;
int t, n;           /// how many cases, current case

int digit[100];

int raise(int n)
{
    int i, j;          /// iterators
	int sum = 1;
	for(j = 1; j <= n; ++j)
	{
		sum = (sum * n) % 10;
	}
	return sum;
}


void preprocess()
{
    int i, j;          /// iterators
    for (i = 0; i < 100; ++i)
	{
		digit[i] = raise(i) % 10;

	}
	digit[0] = 0;
}

int getDigits(string s)
{
    int x;

    if(s.size() == 1)
        x = s[0] - '0';
    else if (s.size() == 2)
        x = (s[0] - '0') * 10 + s[1] - '0';
    else if (s.size() > 2)
        x = (s[s.size() - 2] - '0') * 10 + (s[s.size() - 1] - '0');

    return x;
}

int main()
{
    int i, j;          /// iterators
    string input;
    ifstream cin ("cifra.in");
    ofstream cout ("cifra.out");

    preprocess();

    cin >> t;
    for (i = 0; i < t; ++i)
    {
        cin >> input;

        int sum = 0;
        n = getDigits(input);
        for (j = 0; j <= n; ++j)
        {

            sum = (sum + digit[j]) % 10;
        }
        cout << sum << endl;

    }


    return 0;
}