Cod sursa(job #2393818)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 1 aprilie 2019 09:18:10
Problema Cifra Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <fstream>
#include <string>

using namespace std;

ifstream fin( "cifra.in" );
ofstream fout( "cifra.out" );

int T;
string S;

int LastDigit( int nr, int poww )
{
  nr = nr % 10;
  poww = poww % 4;

  if( nr == 1 ) return 1;
  if( nr == 2 )
  {
    if( poww == 1 ) return 2;
    if( poww == 2 ) return 4;
    if( poww == 3 ) return 8;
    if( poww == 0 ) return 6;
  }
  if( nr == 3 )
  {
    if( poww == 1 ) return 3;
    if( poww == 2 ) return 9;
    if( poww == 3 ) return 7;
    if( poww == 0 ) return 1;
  }
  if( nr == 4 )
  {
    if( poww == 1 ) return 4;
    if( poww == 2 ) return 6;
    if( poww == 3 ) return 4;
    if( poww == 0 ) return 6;
  }
  if( nr == 5 ) return 5;
  if( nr == 6 ) return 6;
  if( nr == 7 )
  {
    if( poww == 1 ) return 7;
    if( poww == 2 ) return 9;
    if( poww == 3 ) return 3;
    if( poww == 0 ) return 1;
  }
  if( nr == 8 )
  {
    if( poww == 1 ) return 8;
    if( poww == 2 ) return 4;
    if( poww == 3 ) return 2;
    if( poww == 0 ) return 6;
  }
  if( nr == 9 )
  {
    if( poww == 1 ) return 9;
    if( poww == 2 ) return 1;
    if( poww == 3 ) return 9;
    if( poww == 0 ) return 1;
  }
}

int main()
{
   fin >> T;

   int NR;

   for( int i = 1; i <= T; ++i )
   //for( NR = 1; NR <= 200; ++NR )
   {
    // fin >> NR;
     fin >> S;

     if( S.size() == 1 ) NR = S[0] - '0';
     else NR = ( S[S.size() - 2] - '0' ) * 10 + S[ S.size() - 1 ] - '0';

     int ans = 0;

     for( int j = 1; j <= NR; ++j )
     {
       ans = ( ans + LastDigit( j, j ) ) % 10;
     }

     fout << ans << '\n';

     //if( NR % 10 == 0 ) fout << '\n';
   }

    return 0;
}