Pagini recente » Cod sursa (job #1255378) | Cod sursa (job #624951) | Cod sursa (job #1828103) | Cod sursa (job #763205) | Cod sursa (job #944058)
Cod sursa(job #944058)
#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) {
//printf("last_part = %d\n", last_part);
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], **numbers;
in = fopen(INPUT, "r");
out = fopen(OUTPUT, "w");
fscanf (in, "%d", &t);
numbers = malloc(t * sizeof(char*));
for (i=0; i<t; i++) {
fscanf (in, "%s", number);
numbers[i] = malloc((strlen(number) + 1) * sizeof(char));
strcpy (numbers[i], number);
}
for (i=0; i<t; i++) {
//printf("%s\n", numbers[i]);
int nrb = tail_2(numbers[i]);
//printf("%d\n", nrb);
int sum = 0;
for (j=1; j<=nrb; j++) {
sum += get_last_digit(j);
sum = sum % 10;
}
//printf("%d\n", sum);
fprintf(out, "%d\n", sum);
}
fclose(in);
fclose(out);
return 0;
}