Pagini recente » Cod sursa (job #261378) | Cod sursa (job #316736) | Cod sursa (job #1179455) | Cod sursa (job #2867390) | Cod sursa (job #944062)
Cod sursa(job #944062)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INPUT "cifra.in"
#define OUTPUT "cifra.out"
int _2[4] = {6, -1, 4, -1};
int _3[4] = {-1, 3, -1, 7};
int _4[4] = {6, -1, 6, -1};
int _7[4] = {-1, 7, -1, 3};
int _8[4] = {6, -1, 4, -1};
/* compute last digit of x^x */
int get_last_digit(int x) {
int index = x % 4;
int last_digit = x % 10;
if (last_digit == 2)
return _2[index];
else if (last_digit ==3)
return _3[index];
else if (last_digit == 4)
return _4[index];
else if (last_digit == 7)
return _7[index];
else if (last_digit == 8)
return _8[index];
return last_digit;
}
int tail_2(char *number) {
int len = strlen(number);
int last_part, last_digit;
if (len == 1) {
last_part = number[len - 1] - '0';
last_digit = last_part;
}
else {
last_digit = number[len - 1] - '0';
last_part = (number[len - 2] - '0') * 10 + last_digit;
}
return last_part;
}
int main() {
FILE *in, *out;
int t, i, j;
char number[100];
in = fopen(INPUT, "r");
out = fopen(OUTPUT, "w");
fscanf (in, "%d", &t);
for (i=0; i<t; i++) {
fscanf (in, "%s", number);
int nrb = tail_2(number);
int sum = 0;
for (j=1; j<=nrb; j++)
sum += get_last_digit(j);
fprintf(out, "%d\n", sum%10);
}
fclose(in);
fclose(out);
return 0;
}