Pagini recente » Cod sursa (job #2684393) | Cod sursa (job #1769676) | Cod sursa (job #2044505) | Cod sursa (job #1828551) | Cod sursa (job #2428902)
#include <fstream>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
char S[1001];
int sum_first[11], sum_second[11], t, T, number, value, r, i, remains, final_digit;
int main()
{ ///0 - {0}
///1 - {1}
///2 - {4, 6}
///3 - {7, 3}
///4 - {6}
///5 - {5}
///6 - {6}
///7 - {3, 7}
///8 - {6, 4}
///9 - {9}
///FIRST
sum_first[1] = 1;
sum_first[2] = (sum_first[1] + 4) % 10;
sum_first[3] = (sum_first[2] + 7) % 10;
sum_first[4] = (sum_first[3] + 6) % 10;
sum_first[5] = (sum_first[4] + 5) % 10;
sum_first[6] = (sum_first[5] + 6) % 10;
sum_first[7] = (sum_first[6] + 3) % 10;
sum_first[8] = (sum_first[7] + 6) % 10;
sum_first[9] = (sum_first[8] + 9) % 10;
sum_first[10] = sum_first[9];
///SECOND
sum_second[1] = 1;
sum_second[2] = (sum_second[1] + 6) % 10;
sum_second[3] = (sum_second[2] + 3) % 10;
sum_second[4] = (sum_second[3] + 6) % 10;
sum_second[5] = (sum_second[4] + 5) % 10;
sum_second[6] = (sum_second[5] + 6) % 10;
sum_second[7] = (sum_second[6] + 7) % 10;
sum_second[8] = (sum_second[7] + 4) % 10;
sum_second[9] = (sum_second[8] + 9) % 10;
sum_second[10] = sum_second[9];
f >> T;
for(t = 1; t <= T; t++){
f >> (S + 1);
r = 0;
for(i = 1; S[i + 1] != 0; i++){
number = (r + (S[i] - '0'));
value = number / 2;
r = (number % 2) * 10;
}
remains = (r + (S[i] - '0'));
final_digit = ((sum_first[10] + sum_second[10]) * value) % 10;
if(remains <= 10)
final_digit = (final_digit + sum_first[remains]) % 10;
else
final_digit = (final_digit + sum_first[10] + sum_second[remains - 10]) % 10;
g << final_digit << '\n';
}
return 0;
}