Pagini recente » Cod sursa (job #1881474) | Cod sursa (job #2384436) | Cod sursa (job #2449788) | Cod sursa (job #658096) | Cod sursa (job #475261)
Cod sursa(job #475261)
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
//ultima cifra a sumelor pana la n=20; ucSuma[0]=0
int ucSuma[21] = {0,1,5,2,8,3,9,2,8,7,7,8,4,7,3,8,4,1,5,4,4};
//numarul n, citit ca sir de caractere
char n[101];
int t;
fstream fin, fout;
void initializare()
{
fin.open("cifra.in", ios::in );
fout.open("cifra.out", ios::out );
fin>>t;
}
//returnez cifra cautata
int ultimaCifra( char *nr )
{
//uc a catului si restul lui n la imp. cu 20
int cat, rest;
int cat_intermediar;
//numar = nr. format din ultimele 2 cf. ale lui n
int numar;
int l;
//daca nr. citit e format dintr-o sg.cifra
if ( strlen(nr) == 1 )
{
rest = nr[0] - '0';
return ucSuma[rest];
}
//daca nr. citit are mai mult de o cf.
l = strlen(nr);
numar = (nr[l-2] - '0')*10 + ( nr[l-1] - '0' );
rest = numar % 20;
cat_intermediar = numar / 20;
if ( l == 2 )
return ( cat_intermediar * 4 + ucSuma[rest] ) % 10;
cat = ( (nr[l-3] - '0')*10 + (cat_intermediar *2 ) ) / 2;
return ( cat * 4 + ucSuma[rest] ) % 10;
}
int main()
{
initializare();
for ( int i=1; i<=t; i++ )
{
fin>>n;
fout<<ultimaCifra(n)<<endl;
}
fin.close();
fout.close();
return 0;
}