Pagini recente » Cod sursa (job #1799634) | Cod sursa (job #1267677) | Cod sursa (job #797224) | Cod sursa (job #544803) | Cod sursa (job #830772)
Cod sursa(job #830772)
#include <fstream>
#include <string>
#include <iostream>
#include <cstdlib>
#include <unistd.h>
using namespace std;
string add(string t)
{
int last = t.size()-1;
int c = 0;
t[last]++;
int first=1;
while((first||c)&&last>=0)
{
if(first) first=0;
c = c+t[last]-'0';
t[last] = (char)(c%10+'0');
last--;
c/=10;
}
if(c)
{
t = "0"+t;
t[0] = (char)(c%10+'0');
}
return t;
}
int lastDigit(string x)
{
string curr = "1";
string counter;
int final=0;
int th;
int c;
/*for i=1 to x */
do
{
c = curr[curr.size()-1]-'0';
counter = "1";
th=1;
/* th = 1^1+2^2+..+x^x */
//::cout << curr << " ";
do
{
th = (th*c)%10;
counter = add(counter);
}while(!(counter>curr));
//::cout << curr << " ";
final = (final+th)%10;
// ::cout << final << endl;
curr = add(curr);
}while(curr!=add(x));
return final;
}
int main()
{
int t;
string x;
ifstream cin("cifra.in");
ofstream cout("cifra.out");
cin >> t;
while(t)
{
cin >> x;
cout << lastDigit(x) << endl;
t--;
}
cin.close();
cout.close();
return 0;
}