Pagini recente » Cod sursa (job #1381861) | Cod sursa (job #3167660) | Cod sursa (job #141300) | Cod sursa (job #1659563) | Cod sursa (job #1289768)
#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;
}
int imp( int * a, int b ) {
int r = 0;
for ( int i = a[0]; i > 0; -- i ) {
r = (a[i] = r * 10 + a[i]) % b;
a[i] /= b;
}
while ( a[0] > 1 && a[a[0]] == 0 )
-- a[0];
return r;
}
void inm( int * a, int b ) {
int t = 0;
for ( int i = 1; i <= a[0]; ++ i ) {
t = ( a[i] = a[i] * b + t ) / 10;
a[i] %= 10;
}
while (t) {
a[++a[0]] = t % 10;
t /= 10;
}
}
void add( int * a, int b ) {
int t = 0;
a[1] += b;
for ( int i = 1; i <= a[0]; ++ i ) {
t = ( a[i] = a[i] + t ) / 10;
a[i] %= 10;
}
if ( t )
a[ ++a[0] ] = t;
}
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;
//memset(num, 0, num[0] * sizeof(int));
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;
}