Cod sursa(job #1453695)

Utilizator Salomia_Adrian_325CCSalomia Adrian Salomia_Adrian_325CC Data 24 iunie 2015 11:10:55
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
	FILE *f1 = fopen("cifra.in", "r");
	FILE *f2 = fopen("cifra.out", "w");

	int T;
	fscanf(f1, "%d", &T);

	int i;
	char *nr = (char *) malloc (101 * sizeof(char));
	int ultima_cifra, a, b;

	for(i = 0;i < T;i++) {
		fscanf(f1, "%s", nr);
		b = nr[strlen(nr) - 1] - '0';
		
		if(strlen(nr) == 1) {
			switch(b) {
				case 1:	ultima_cifra = 1; break;

				case 2:	ultima_cifra = 5; break;

				case 3:	ultima_cifra = 2; break;

				case 4:	ultima_cifra = 8; break;

				case 5:	ultima_cifra = 3; break;

				case 6:	ultima_cifra = 9; break;

				case 7:	ultima_cifra = 2; break;

				case 8:	ultima_cifra = 8; break;

				case 9:	ultima_cifra = 7; break;
			}
		}
		else {
			a = nr[strlen(nr) - 2] - '0';
			if(a%2 == 0) {
				switch(b) {
					case 1:	ultima_cifra = 1; break;

					case 2:	ultima_cifra = 5; break;

					case 3:	ultima_cifra = 2; break;

					case 4:	ultima_cifra = 8; break;

					case 5:	ultima_cifra = 3; break;

					case 6:	ultima_cifra = 9; break;

					case 7:	ultima_cifra = 2; break;

					case 8:	ultima_cifra = 8; break;

					case 9:	ultima_cifra = 7; break;

					case 0: ultima_cifra = 7;
				}
			}
			else {
				switch(b) {
					case 1:	ultima_cifra = 1; break;

					case 2:	ultima_cifra = 7; break;

					case 3:	ultima_cifra = 0; break;

					case 4:	ultima_cifra = 6; break;

					case 5:	ultima_cifra = 1; break;

					case 6:	ultima_cifra = 7; break;

					case 7:	ultima_cifra = 4; break;

					case 8:	ultima_cifra = 8; break;

					case 9:	ultima_cifra = 7; break;

					case 0: ultima_cifra = 7;
				}
			}

			ultima_cifra = (ultima_cifra + 7*a)%10;
		}
		fprintf(f2, "%d\n", ultima_cifra);
	}

	free(nr);
	fclose(f1);
	fclose(f2);
	return 0;
}