Pagini recente » Cod sursa (job #2688247) | Cod sursa (job #2984832) | Cod sursa (job #2830257) | Cod sursa (job #2340442) | Cod sursa (job #1887305)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
int lastDigitOfPower(int base, int power) {
int aux = base % 10;
int p = 1;
for (int i = 0; i < power; i++)
p = (p * aux) % 10;
return p;
}
char* constructLookUpTable(int size) {
char *lut = (char*) malloc(size * sizeof(char));
lut[0] = 0;
for(int i = 1; i < size; i++) {
int tmp = lastDigitOfPower(i, i);
lut[i] = (lut[i-1] + tmp) % 10;
}
return lut;
}
int main() {
char *lut = constructLookUpTable(SIZE);
char *inputFileName = "cifra.in";
char *outputFileName = "cifra.out";
char tmp[110];
FILE *in, *out;
int t;
in = fopen(inputFileName, "r");
if (in == NULL) {
printf("Can't open input file with name \"%s\".", inputFileName);
return -1;
}
out = fopen(outputFileName, "w");
if (out == NULL) {
printf("Can't create output file with name \"%s\".", outputFileName);
return -1;
}
fscanf(in, "%d", &t);
for(int i = 0; i < t; i++) {
fscanf(in, "%s", tmp);
//printf("%s\n", tmp);
int length = strlen(tmp);
if (length == 1)
fprintf(out, "%d", lut[tmp[0] - '0']);
else {
int beforeLast = tmp[length - 2] - '0';
int last = tmp[length - 1] - '0';
fprintf(out, "%d\n", lut[beforeLast*10 + last]);
}
}
fclose(in);
fclose(out);
free(lut);
return 0;
}