Cod sursa(job #1066134)

Utilizator olly2204Olly2204 olly2204 Data 24 decembrie 2013 00:54:44
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
//#include "stdafx.h"
//#include "LastDigit.h"

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

std::ifstream in("cifra.in");
std::ofstream out("cifra.out");

char GetLastDigitOfPower(int base, int power);
char GetLastDigitOfSequence(int number);

int main()
{
    int inputsCount = 0;
    in >> inputsCount;

    while (inputsCount > 0) 
    {
        char s[110];
        in >> s;

        int index = 0;
        char c = s[index];

        while (c != '\0')
        {
            index++;
            c = s[index];
        }

        /// We want the last 2 digits
        if (index > 1)
        {
            index--;
        }

        c = s[index-1];
        int number = atoi(&c);

        int result = 0;
        if (number != 0)
        {
            result = GetLastDigitOfSequence(number);
        }
        out << result << "\n";

        inputsCount--;
    }

    return 0;
}

char GetLastDigitOfSequence(int maxNumber)
{
    char digit = 0;
    char lastDigit;
    for (int number = 1; number <= maxNumber; number++)
    {
        lastDigit = GetLastDigitOfPower(number, number);
        digit = (digit + lastDigit) % 10;
    }
    return digit;
}

char GetLastDigitOfPower(int base, int power)
{
    char digit = 1;
    while(power > 0)
    {
        digit = (digit * base ) % 10;
        power--;
    }
    return digit;
}