Pagini recente » Cod sursa (job #2708949) | Cod sursa (job #3038014) | Cod sursa (job #1129823) | Cod sursa (job #550544) | Cod sursa (job #2231381)
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <fstream>
std::ifstream in("cifra.in");
std::ofstream out("cifra.out");
using namespace std;
const int MAX = 100;
char Number[MAX + 1];
vector < int > myVector;
void PushValues()
{
//Fiecare element al vectorului reprezinta ultima cifra a numarului N^N
myVector.push_back(1); //1^1
myVector.push_back(4); //2^2
myVector.push_back(7); //3^3
myVector.push_back(6); //4^4
myVector.push_back(5); //5^5
myVector.push_back(6); //6^6
myVector.push_back(3); //7^7
myVector.push_back(6); //8^8
myVector.push_back(9); //9^9
myVector.push_back(0); //10^10
myVector.push_back(1); //11^11
myVector.push_back(6); //12^12
myVector.push_back(3); //13^13
myVector.push_back(6); //14^14
myVector.push_back(5); //15^15
myVector.push_back(6); //16^16
myVector.push_back(7); //17^17
myVector.push_back(4); //18^18
myVector.push_back(9); //19^19
myVector.push_back(0); //20^20
//Ultima cifra a sumei oricaror 20 termeni consecutivi este 4
}
int main()
{
PushValues();
int Queries;
in >> Queries; // Citim cate intrebari avem
while (Queries--)
{
int Last = 0;
in >> Number; // Citim numarul
int Lg = strlen(Number);
if (Lg > 1)
{
Last = (Number[Lg - 1] - 48) + (Number[Lg - 2] - 48) * 10; // Daca are mai mult de o cifra numarul le luam pe ultimele 2
// sub forma de int
}
else Last = Number[0] - 48; // Altfel o luam doar pe ultima
// Trebuie sa vedem ultima cifra a sumei din enunt dar pentru numarul Last
int R = Last % 20; // Cati termeni raman dupa ce impartim la 20
int Sum = Last / 20 * 4 % 10; //Inmultim cate perechi consecutive de 20 am gasit in Last
//(care e cel mult 4, deci Sum da cel mult 16, asa ca impartim cu rest la 10)
for (int k = 0; k < R; ++k) // Trecem prin toti termenii care raman la impartirea cu 20
Sum += myVector[k]; // Si adunam fiecare ultima cifra la Sum
out << Sum % 10 << "\n"; // Afisam pe ultima
}
return 0;
}