Cod sursa(job #451104)

Utilizator SuperSuper Smecher Super Data 9 mai 2010 00:32:18
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.72 kb
#include <iostream>
#include <fstream>
using namespace std;

#include<stdio.h>


int calcul(int n)
{
  int ult = n%10;
  
  int ret = 0;
  switch(ult)
  {
    case 0:
      ret = 0;
      break;
    case 1:
      ret = 1;
      break;
    case 2:
      switch (n%4)
      {
        case 1:
          ret = 2;
          break;
        case 2:
          ret = 4;
          break;
        case 3:
          ret = 8;
          break;
        case 0:
          ret = 6;
          break;
      }
      break;
    case 3:
      switch (n%4)
      {
        case 1:
          ret = 3;
          break;
        case 2:
          ret = 9;
          break;
        case 3:
          ret = 7;
          break;
        case 0:
          ret = 1;
          break;
      }
      break;
    case 4:
      switch (n%2)
      {
        case 1:
          ret = 4;
          break;
        case 0:
          ret =6;
          break;
      }
      break;
    case 5:
      ret =5;
      break;
    case 6:
      ret =6;
      break;
    case 7:
      switch (n%4)
      {
        case 1:
          ret = 7;
          break;
        case 2:
          ret = 9;
          break;
        case 3:
          ret = 3;
          break;
        case 0:
          ret = 1;
          break;
      }
      break;
    case 8:
      switch (n%4)
      {
        case 1:
          ret = 8;
          break;
        case 2:
          ret = 4;
          break;
        case 3:
          ret = 2;
          break;
        case 0:
          ret = 6;
          break;
      }
      break;
    case 9:
      switch (n%2)
      {
        case 1:
          ret = 9;
          break;
        case 0:
          ret = 1;
          break;
      }
      break;    
  }
  
  return ret;
}

int ncalcul(int n)
{
  int s = 0;
  for(int i=1;i<=n;i++)
  {
    s += calcul(i);
    if(s > 9)
      s = s%10;
  }
  return s;
}


int main()
{
  //int rep = ncalcul(20);
  //
  //int nr = 78907809780; //78907809780
  //int x = (((nr/20)%10)*rep)%10;
  //int y = ncalcul(nr%20);
  //int z = (x+y)%10;
  //
  //cout<<z<<endl;
  //
  //cout<<nr<<"="<<ncalcul(nr)<<endl;
  //
  //return 0;

  /*FILE *f = freopen("cifra.in","w",stdout);
  printf("%d\n",50000);
  for(int i=1;i<=50000;i++)
  {
    printf("%d\n",i);  
  }
  return 0;*/
  
  int n = 0, k = 0;
  freopen("cifra.in","r",stdin);
  freopen("cifra.out","w",stdout);
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
  {
    scanf("%d",&k);
    int nr = k;
    int x = (((nr/20)%10)*4)%10;
    int y = ncalcul(nr%20);
    int z = (x+y)%10;
    printf("%d\n",z);
    //k = ncalcul(k);
    //printf("%d\n",k);
  }
  return 0;
}