Cod sursa(job #139314)

Utilizator mgntMarius B mgnt Data 19 februarie 2008 22:42:29
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
# include <cstdio>
# include <cstring>
using namespace std ;

static
void compute ( int digit [ 100 ] ) {
  int d , i , p [ 10 ] ;
  p [ 0 ] = 0 ;
  for ( d = 1 ; d <= 9 ; ++ d ) {
    p [ d ] = 1 ;
  }
  digit [ 0 ] = 0 ;
  for ( i = 1 ; i <= 99 ; ++ i ) {
    for ( d = 1 ; d <= 9 ; ++ d ) {
      p [ d ] *= d  ;
      p [ d ] %= 10 ;
    }
    digit [ i ]  = digit [ i - 1 ] + p [ i % 10 ] ;
    digit [ i ] %= 10 ;
  }
}

int main ( ) {
  int digit [ 100 ] ;
  compute ( digit ) ;
  freopen ( "cifra.in"  , "r" , stdin  ) ;
  freopen ( "cifra.out" , "w" , stdout ) ;
  int const maxlen = 100 ;
  char line [ maxlen + 10 ] ;
  int t , k , i , j ;
  scanf ( "%d" , & t ) ;
  for ( i = 0 ; i < t ; ++ i ) {
    scanf ( "%s\n" , line ) ;
    k = strlen ( line ) ; // psi : 1 <= k
    j = line [ k - 1 ] - '0' ;
    if ( 1 < k ) {
      j = ( line [ k - 2 ] - '0' ) * 10 + j ;
    }
    printf ( "%d\n" , digit [ j ] ) ;
  }
  return 0 ;
}