Cod sursa(job #1559395)

Utilizator daniel.sanduSandu Daniel daniel.sandu Data 30 decembrie 2015 18:15:01
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <iostream>
#include <string>

int cifra(const std::string& buffer) {
	const int partialSum[] = {
		0, 1, 5, 2, 8, 3, 9, 2, 8, 7, 7, 8, 4, 7, 3, 8, 4, 1, 5, 4
	};
	int size = buffer.size(),
			n = buffer[size - 1] - '0',
	    multiplier,
			result = 0;
	
  if (size > 1) {
		n += 10 * (buffer[size - 2] - '0');
		multiplier = ((((n - (n % 20)) / 10) % 5) * 3) % 5;
		result += partialSum[19] * multiplier;
	}	
	result += partialSum[n % 20];
	return result % 10;
}

int main() {
	char const * const inputFile = "cifra.in",
						 * const outputFile = "cifra.out";
	std::ifstream in(inputFile);
	std::ofstream out(outputFile);
	
	std::string buffer;
	std::getline(in, buffer);
	while (std::getline(in, buffer) && !buffer.empty())
		out << cifra(buffer) << std::endl;
	return 0;
}