Cod sursa(job #454628)

Utilizator SuperSuper Smecher Super Data 12 mai 2010 08:55:38
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.35 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 n = 0, k = 0;
  freopen("cifra.in","r",stdin);
  freopen("cifra.out","w",stdout);
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
  {
    char str[101];
    scanf("%s",str);
    int i1 = 0, i2 = 0, i3 = 0;
    for(int j=0;j<101;j++)
    {
      if(str[j] == '\0') break;
      if(j>1) i1 = 100 * (str[j-2] - '0');
      if(j>0) i2 = 10 * (str[j-1] - '0');
      i3 = str[j] - '0';
    }
    
    int nr = i1 + i2 + i3;
    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;
}