Cod sursa(job #1546005)

Utilizator arlechin96Stavariu Matei arlechin96 Data 7 decembrie 2015 16:20:04
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<stdio.h>
#include <string.h>

int M[11][10], v[11];

void faTabel() {
	M[0][0] = 0;
	M[1][0] = 1;
	M[2][0] = 6; M[2][1] = 2; M[2][2] = 4; M[2][3] = 8; 
	M[3][0] = 1; M[3][1] = 3; M[3][2] = 9; M[3][3] = 7; 
	M[4][0] = 6; M[4][1] = 4;
	M[5][0] = 5;
	M[6][0] = 6;
	M[7][0] = 1; M[7][1] = 7; M[7][2] = 9; M[7][3] = 3;
	M[8][0] = 6; M[8][1] = 8; M[8][2] = 4; M[8][3] = 2;
	M[9][0] = 1; M[9][1] = 9;
	v[0] = 1;
	v[1] = 1;
	v[2] = 4;
	v[3] = 4;
	v[4] = 2;
	v[5] = 1;
	v[6] = 1;
	v[7] = 4;
	v[8] = 4;
	v[9] = 2;
}

int suma ( int a )
{ 
	int i;
	int S = 0;
	for (  i = 1 ; i <= a; i++)
	{
		S += M[i % 10][i % v[i % 10]];
	}
	return S;
}

int main () 
{
	int n ,i ,t, k[101] ;
	char N[101];
	
	faTabel();
	
	freopen( "cifra.in", "r" , stdin);
	freopen ( "cifra.out" , "w", stdout);
	//cin >> t; 
	scanf("%d\n", &t);
	for ( i = 1 ; i <= 100 ; i++)
	{
		//cin >> n ;
		n = i;
		
		// cout << suma(n) % 10 << endl ; 
		 
		//printf("%d\n", suma(n) % 10);
		k[i % 100] = suma(n) % 10;
	}
	
	int r = 0;
	
	for (i = 1; i <= t; i++) {
		gets(N);
		int lungime = strlen(N);
		if (lungime < 2) {
			r = (int)(N[lungime - 1] - '0');
		} else {
			r = (int)(N[lungime - 2] - '0') * 10 + (int)(N[lungime - 1] - '0');
		}
		printf("%d\n", k[r]);
	}
	
	return 0 ;
}