Cod sursa(job #1289770)

Utilizator ghimpeleSeteanu Radu ghimpele Data 10 decembrie 2014 11:47:49
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <string.h>
#define LMax 110

const char IN[] = "cifra.in", OUT[] = "cifra.out";

int Tes, sum = 0;
int v[25];
int num[LMax];

int pow( int x, int p ) {

	int sol = 1;

	x %= 10;
	for ( int i = 0; ( 1 << i ) <= p; ++ i ) {
		if ( (1 << i) & p )
			sol = sol * x % 10;
		x = x * x % 10;
	}
	return sol;

}

void read( int * a ) {
	static char s[LMax];
	scanf("%s", s + 1);

	a[0] = strlen(s + 1);

	for ( int i = 1; i <= a[0]; ++ i )
		a[i] = s[a[0] - i + 1] - '0';
}

void write( int * a ) {

	for ( int i = a[0]; i > 0; -- i )
		printf("%d", a[i]);
	printf("\n");
}

int main() {

	freopen(IN, "r", stdin);
	freopen(OUT, "w", stdout);

	for ( int i = 1; i <= 20; ++ i )
		v[i] = pow(i, i);

	for ( int i = 1; i <= 20; ++ i )
		sum += v[i];

	scanf("%d", &Tes);
	while ( Tes -- ) {
		int r, s = 0;
		for ( int i = num[0]; i >= 0; -- i )
			num[i] = 0;

		read(num);
		r = num[2] * 10 + num[1];

		for ( int i = 1; i <= r; ++ i ) s += v[(i - 1) % 20 + 1];

		printf("%d\n", s % 10);
	}
	return 0;
}