Cod sursa(job #2258233)

Utilizator whitewolf3131Ursu Laurentiu Cristian whitewolf3131 Data 11 octombrie 2018 01:13:32
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>
#include <string>

using namespace std;

ifstream in("cifra.in");
ofstream out("cifra.out");

int c[10][5] = { {1, 0, 0, 0, 0}, {1, 1, 0, 0, 0}, {4, 6, 2, 4, 8}, {4, 1, 3, 9, 7}, {2, 6, 4, 0, 0}, {1, 5, 0, 0, 0}, {1, 6, 0, 0, 0}, {4, 1, 7, 9, 3}, {4, 6, 8, 4, 2}, {2, 1, 9, 0, 0} };
int main()
{
	int t;
	in >> t;
	string useless;
	getline(in, useless);
	char v[3] = { 'e', 'e', 'e' };
	for (int i = 1; i <= t; i++) {
		string curr;
		getline(in, curr);
		int x = curr.length();
		char v[3] = { 'e', 'e', 'e' };
		if (x > 1) {
			if (x > 2) {
				v[2] = curr[curr.length() - 1];
				v[1] = curr[curr.length() - 2];
				v[0] = curr[curr.length() - 3];
			}
			else {
				v[2] = curr[curr.length() - 1];
				v[1] = curr[curr.length() - 2];
			}
		}
		else {
			v[2] = curr[curr.length() - 1];
		}
		for (int j = 0; j <= 2; j++) {
			if (v[j] == 'e') {
				v[j] = '0';
			}
		}
		int num = 0;
		for (int j = 0; j <= 2; j++) {
			if (v[j] != 'e') {
				num = num * 10 + (v[j] - 48);
			}
		}
		num = num % 100;
		int needlater = num/10;
		int dec = num / 10;
		if (dec % 2 == 0) {
			dec = dec / 2;
			dec = dec * 4;
		}
		else {
			dec = dec / 2;
			dec++;
			dec = dec * 4;
		}
		dec = dec % 10;
		num = num%10;
		int sum = 0;
		for (int j = 1; j <= num; j++) {
			int aux = j % 10;
			int cop = needlater * 10 + j;
			int aux2 = cop % c[aux][0];
			sum = sum + c[aux][aux2 + 1];
			sum = sum % 10;
		}
		sum = sum + dec;
		sum = sum % 10;
		out << sum << '\n';
	}
}