Pagini recente » Cod sursa (job #741364) | Cod sursa (job #504764) | Cod sursa (job #2057691) | Cod sursa (job #1591289) | Cod sursa (job #91350)
Cod sursa(job #91350)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int pow[9][4];
int a10[10];
int a20[10];
void initPow()
{
for(int i=1;i<10;++i)
{
int a = 1;
for(int j=0;j<4;++j)
{
a *= i;
a %=10;
pow[i-1][j] = a;
}
}
int start = 0;
int result = 0;
for(int j=0;j<10;++j)
{
result = (result+pow[j][start])%10;
start = (start+1)%4;
a10[j] = result;
}
start = 2;
result = 0;
for(int j=0;j<10;++j)
{
result = (result+pow[j][start])%10;
start = (start+1)%4;
a20[j] = result;
}
}
int main(void)
{
ifstream in;
ofstream out;
string line;
int t;
initPow();
in.open("cifra.in");
out.open("cifra.out");
in >> t;
for(int i=0;i<t;++i)
{
in >> line;
int result = 0;
int start = 0;
if(line.length() >= 2)
{
int a1 = line.at(line.length() - 2) - '0';
result = (7 * a1)%10;
if (a1%2!=0)
start = 2;
}
int a2 = line.at(line.length() - 1) - '0';
if(start == 0)
result = (result+a10[a2-1])%10;
else
result = (result+a20[a2-1])%10;
out << result << endl;
}
in.close();
out.close();
return 0;
}