Cod sursa(job #2021180)

Utilizator skoda888Alexandru Robert skoda888 Data 12 septembrie 2017 20:02:22
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
//Problema 8 - Cifra

#include <iostream>
#include <fstream>
#include <string.h>


int main()
{
    int T;

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

    //suma pentru n = 100 este egal cu 0
    //ceea ce inseamna ca suma pentru oricare n este date de n = ultimele doua cifre ale lui n
    //ultimele cifre pentru toate numerele incepand de la 100
    int a[100];

    for(int num = 1; num <= 99; num++)
    {
        a[num] = num;
        //aflu ultima cifra a lui n ^ n
        for(int i = 1; i < num; i++)
        {
            a[num] *= num;
            a[num] %= 10;
        }
        //memorez suma de pana acum
        a[num] += a[num - 1];
        a[num] %= 10;
    }

    //numarul de teste pentru N
    in >> T;

    //din nu stiu ce cauza citeste un rand gol, deci il citesc si trec mai departe
    std::string gol;
    std::getline(in, gol);

    for(int i = 0; i < T; i++)
    {
        char m[256];
        in >> m;
        int len = strlen(m);


        if(len == 1)
        {
            out << a[m[0] - '0'] << std::endl;
        }

        else{
            out << a[(m[len - 2] - '0')* 10 + m[len - 1] - '0'] << std::endl;
        }
    }
    return 0;
}