Cod sursa(job #667849)

Utilizator GrampaLivadariu Mihai Andrei Grampa Data 23 ianuarie 2012 20:23:10
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <stdio.h>
#include <string.h>

/*const int digits_powers[10][4] = {
	{ 0, 0, 0, 0 },
	{ 1, 1, 1, 1 },
	{ 6, 2, 4, 8 },
	{ 1, 3, 9, 7 },
	{ 6, 4, 6, 4 },
	{ 5, 5, 5, 5 },
	{ 6, 6, 6, 6 },
	{ 1, 7, 9, 3 },
	{ 6, 8, 4, 2 },
	{ 1, 9, 1, 9 },
};

int solve( int n ) {
	int digit = 1;

	for( int i = 2; i <= n; i++ ) {
		digit = ( digit + digits_powers[ i % 10 ][ i % 4 ] ) % 10;
	}

	return digit;
}*/


const int digits_memo[10][10] = {
	{ 0, 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 }
};

int main() {
	int t, l, c1, c2;
	char n[101];
	
	FILE	*f = fopen( "cifra.in", "r" ),
			*g = fopen( "cifra.out", "w" );
	fscanf( f, "%d", &t );

	for( int i = 1; i <= t; ++i ) {
		fscanf( f, "%s", n );
		l = strlen( n );
		
		if( l == 1 ) c1 = 0;
		else c1 = n[ l - 2 ] - '0';
		c2 = n[ l - 1 ] - '0';
		
		fprintf( g, "%d\n", digits_memo[c1][c2] );
	}
	
	return 0;
}