Pagini recente » Cod sursa (job #548674) | Cod sursa (job #241230) | Cod sursa (job #2972288) | Cod sursa (job #1402423) | Cod sursa (job #472411)
Cod sursa(job #472411)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cstring>
#define MAX_DIGITS 102
#define ld(x) ((x)%10)
using namespace std;
char last_digit(char* bignum)
{
char powu = bignum[strlen(bignum) - 1];
char powz;
if(strlen(bignum) != 1)
powz = bignum[strlen(bignum) - 2];
else
powz = '0';
char pow_last = (powu - '0') + 10 * (powz - '0');
powz = powz - '0';
powu = powu - '0';
char partial = (pow_last/10 * 7) % 10;
switch(powu)
{
case 0:
{
return ld(partial);
}
case 1:
{
cout << (int)(partial+1) << "\n";
return ld(partial + 1);
}
case 2:
{
if(powz % 2)
return ld(partial + 7);
else
return ld(partial + 5);
}
case 3:
{
if(powz % 2)
return ld(partial);
else
return ld(partial + 2);
}
case 4:
{
if(powz % 2)
return ld(partial + 6);
else
return ld(partial + 8);
}
case 5:
{
if(powz % 2)
return ld(partial + 1);
else
return ld(partial + 3);
}
case 6:
{
if(powz % 2)
return ld(partial + 7);
else
return ld(partial + 9);
}
case 7:
{
if(powz % 2)
return ld(partial + 4);
else
return ld(partial + 2);
}
case 8:
{
return ld(partial + 8);
}
case 9:
{
return ld(partial + 7);
}
}
}
char s[MAX_DIGITS];
int main()
{
ifstream in("cifra.in");
int N;
in >> N;
int total = 0;
ofstream out("cifra.out");
for(int i = 0; i < N; i++)
{
in >> s;
out << (int)last_digit(s) << "\n";
}
in.close();
out.close();
return 0;
}