Cod sursa(job #198848)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 15 iulie 2008 13:23:50
Problema Cifra Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 kb
#include <stdio.h>
#include <string.h>

int f(short int x,long y)
{
    switch (x)
    {
           case 0: return 0;
           case 1: return 1;
           case 2: switch (y%4)
                   {
                          case 1: return 2;
                          case 2: return 4;
                          case 3: return 8;
                          case 0: return 6;
                   }
           case 3: switch (y%4)
                   {
                          case 1: return 3;
                          case 2: return 9;
                          case 3: return 7;
                          case 0: return 1;
                   }
           case 4: switch (y%2) 
                   {
                          case 1: return 4;
                          case 0: return 6;
                   }
           case 5: return 5;
           case 6: return 6;
           case 7: switch (y%4)
                   {
                          case 1: return 7;
                          case 2: return 9;
                          case 3: return 3;
                          case 0: return 1;
                   }
           case 8: switch (y%4)
                   {
                          case 1: return 8;
                          case 2: return 4;
                          case 3: return 2;
                          case 0: return 6;
                   }
           case 9: switch (y%2)
                   {
                         case 1: return 9;
                         case 0: return 1;
                   }
    }
    return 0;
}
int main()
{
    int A[100],i,n,x;
    A[0]=0;
    for (i=1;i<101;i++) A[i] = (A[i-1]+f(i%10,i))%10;
    freopen("cifra.in","r",stdin);
    freopen("cifra.out","w",stdout);
    scanf("%d",&n);
    char s[100];
    for (;n;n--)
    {
        scanf("%s",s);
        if (strlen(s)==1) {x=s[0]-'0';printf("%d\n",A[x]);}
        else {x=(s[strlen(s)-2]-'0')*10+(s[strlen(s)-1]-'0'); printf("%d\n",A[x]);}
    }
    return 0;
}