Cod sursa(job #2545277)

Utilizator flvflvFlavius Ilinoiu flvflv Data 12 februarie 2020 22:50:37
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#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";
		}
	}
}