Pagini recente » Cod sursa (job #2912574) | Cod sursa (job #814076) | Cod sursa (job #456479) | Cod sursa (job #103313) | Cod sursa (job #2021124)
//Problema 8 - Cifra
#include <iostream>
#include <fstream>
int main()
{
int T;
std::ifstream in_cifra("cifra.in");
std::ofstream out_cifra("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
short n_egal_100[100];
for(short num = 1; num <= 99; num++)
{
n_egal_100[num] = num;
//aflu ultima cifra a lui n ^ n
for(int i = 1; i < num; i++)
{
n_egal_100[num] *= num;
n_egal_100[num] %= 10;
}
//memorez suma de pana acum
n_egal_100[num] += n_egal_100[num - 1];
n_egal_100[num] %= 10;
}
//numarul de teste pentru N
in_cifra >> T;
//din nu stiu ce cauza citeste un rand gol, deci il citesc si trec mai departe
std::string gol;
std::getline(in_cifra, gol);
//efectuez cele T teste pentru N
while((T--) > 0)
{
//voi avea numere mari, asadar le voi citi ca string-uri
std::string numar_mare;
std::getline(in_cifra, numar_mare);
// daca numarul are o cifra
if(numar_mare.size() == 1)
{
out_cifra << n_egal_100[numar_mare[0] - '0'] << std::endl;
}
//in caz contrar
else{
out_cifra << n_egal_100[(numar_mare[numar_mare.size() - 2] - '0')* 10 + numar_mare[numar_mare.size() - 1] - '0'] << std::endl;
}
}
return 0;
}