Pagini recente » Cod sursa (job #303572) | Cod sursa (job #298912) | Cod sursa (job #1424724) | Cod sursa (job #1055715) | Cod sursa (job #3140909)
#include <fstream>
using namespace std;
ifstream cin ("cifra.in");
ofstream cout ("cifra.out");
class Numar_Mare {
private:
int cifre[101];
public:
Numar_Mare () { cifre[0] = 0; }
~Numar_Mare () { }
friend ifstream &operator >> (ifstream &intrare , Numar_Mare &numar) {
char sir[101]; intrare >> sir;
int indice = 0; numar.cifre[0] = 0;
while (sir[indice]) indice++;
while (indice) numar.cifre[++numar.cifre[0]] = sir[--indice] - '0';
return intrare;
}
Numar_Mare Impartire (int impartitor , int &rest) {
Numar_Mare rezultat; rest = 0;
rezultat.cifre[0] = (*this).cifre[0];
for (int indice = cifre[0] ; indice ; indice-- , rest %= impartitor)
rezultat.cifre[indice] = (rest = 10 * rest + cifre[indice]) / impartitor;
while (rezultat.cifre[0] && !rezultat.cifre[rezultat.cifre[0]])
rezultat.cifre[0]--;
return rezultat;
}
int back () {
return cifre[cifre[0]];
}
};
int sir[] = {0 , 1 , 5 , 2 , 8 , 3 , 9 , 2 , 8 , 7 , 7 , 8 , 4 , 7 , 3 , 8 , 4 , 1 , 5 , 4};
int main ()
{
int intrebari;
cin >> intrebari;
Numar_Mare numar;
for (int indice = 1 ; indice <= intrebari ; indice++)
{
cin >> numar;
int rest;
Numar_Mare repetitii = numar.Impartire(20 , rest);
cout << (4 * repetitii.back() + sir[rest]) % 10 << '\n';
}
return 0;
}