Pagini recente » Cod sursa (job #830874) | Cod sursa (job #165513) | Cod sursa (job #785693) | Cod sursa (job #881806) | Cod sursa (job #830767)
Cod sursa(job #830767)
#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;
while(!(curr>x))
{
//::cout << "Starting: " << curr << endl;
int c = curr[curr.size()-1]-'0';
counter = "1";
th=1;
do
{
th = (th*c)%10;
counter = add(counter);
}while(!(counter>curr));
// ::cout << "TH: " << th << endl;
final = (final+th)%10;
curr = add(curr);
}
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;
}