Pagini recente » Istoria paginii runda/winners18 | Cod sursa (job #2537026) | Cod sursa (job #2838363) | Cod sursa (job #435013) | Cod sursa (job #2545277)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int digits[101];
vector<vector<int>> lasts;
void generateRepetitions()
{
for (int i = 0;i <= 9;i++)
{
lasts.push_back(vector<int>());
lasts[i].push_back(i);
auto last = (i*i) % 10;
while (last != lasts[i].front())
{
lasts[i].push_back(last);
last = (last*i) % 10;
}
}
}
void generateDigits()
{
generateRepetitions();
for (int i = 0;i <= 100;i++)
{
int glast = 0;
for (int j = 1;j <= i;j++)
{
glast += lasts[j % 10][(j-1) % lasts[j % 10].size()];
glast %= 10;
}
digits[i] = glast;
}
}
int main()
{
ifstream input("cifra.in");
ofstream output("cifra.out");
generateDigits();
int lines;
int digit;
string number;
input >> lines;
for (int line = 1; line <= lines; line++)
{
input >> number;
digit = (number[number.length() - 1] - '0');
if (number.length() == 1)
{
output << digits[digit] << "\n";
}
else
{
digit = (number[number.length() - 1] - '0') + (number[number.length() - 2] - '0')*10;
output << digits[digit] << "\n";
}
}
}