Cod sursa(job #1294151)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 17 decembrie 2014 00:15:56
Problema Cifra Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	// Acest pattern se repeta din 100 in 100
	// Fiecare last[i] reprezinta ultima cifra a sumei 1^1 + ... + i^i
	// Din acest motiv, selectia ultimei cifre
	// se face pe baza ultimelor doua cifre din N
	int last[] = {  1,5,2,8,3,9,2,8,7,7,
					8,4,7,3,8,4,1,5,4,4,
					5,9,6,2,7,3,6,2,1,1,
					2,8,1,7,2,8,5,9,8,8,
					9,3,0,6,1,7,0,6,5,5,
					6,2,5,1,6,2,9,3,2,2,
					3,7,4,0,5,1,4,0,9,9,
					0,6,9,5,0,6,3,7,6,6,
					7,1,8,4,9,5,8,4,3,3,
					4,0,3,9,4,0,7,1,0,0  };
	ifstream in("cifra.in");
	ofstream out("cifra.out");
	int T;
	string line = "";
	in >> T;
	in.get();

	for (int i = 0; i < T; i++) {
		getline(in, line);
		if (line.size() == 1) {
			int ultima = line[line.size() - 1] - '0';
			out << last[ultima - 1] << '\n';
		}
		else if (line.size() > 1 ) {
			int ultima = line[line.size() - 1] - '0';
			int penultima = line[line.size() - 2] - '0';
			out << last[penultima * 10 + ultima - 1] << '\n';
		}
	}

	in.close();
	out.close();

	return 0;
}