Cod sursa(job #285088)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 22 martie 2009 12:50:31
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.73 kb
   #include <stdio.h>  
   #include <math.h>  
    #include <string.h>  
      
    int putere(int pn);  
      
    FILE* f;  
   FILE* s;  
    
  int t;  
   int n;  
   
 char sir[101];  
     
   int main()  
   {  
     f=fopen ("cifra.in","r");  
      s=fopen ("cifra.out","w");  
  
      fscanf (f,"%d\n",&t);  
    
      for (int i=0;i<t;i++)  
          {  
              fscanf (f,"%s\n",sir);  
   
             if (strlen(sir)==1)  
                 n=sir[strlen(sir)-1]-'0';  
             else  
                 n=(sir[strlen(sir)-2]-'0')*10+sir[strlen(sir)-1]-'0';  
     
             n=n%100;  
     
             int suma=0;  
              for (int j=1;j<=n;j++)  
                   suma+=putere(j);  
     
            fprintf (s,"%d\n",suma%10);  
          }  
   
          fclose (f);  
          fclose (s);  
    
         return 0;  
     }  
    
   int putere(int pn)  
   {  
       int numar=pn;  
       int ultima=numar%10;  
       int rezultat;  
     
       switch (ultima)  
       {  
           case 0: rezultat=0;  
                   break;  
     
           case 1: rezultat=1;  
                   break;  
    
           case 2: switch(numar%4)  
                   {  
                       case 0: rezultat=6;  
                               break;  
                       case 1: rezultat=2;  
                               break;  
                       case 2: rezultat=4;  
                               break;  
                       case 3: rezultat=8;  
                              break;  
                   }  
                   break;  
     
           case 3: switch(numar%4)  
                   {  
                       case 0: rezultat=1;  
                               break;  
                      case 1: rezultat=3;  
                              break;  
                       case 2: rezultat=9;  
                              break;  
                       case 3: rezultat=7;  
                               break;  
                   }  
                   break;  
     
           case 4: switch(numar%2)  
                   {  
                       case 0: rezultat=6;  
                              break;  
                       case 1: rezultat=4;  
                              break;  
                  }  
                   break;  
     
         case 5: rezultat=5;  
                 break;  
    
          case 6: rezultat=6;  
                  break;  
    
          case 7: switch(numar%4)  
                  {  
                      case 0: rezultat=1;  
                              break;  
                      case 1: rezultat=7;  
                              break;  
                      case 2: rezultat=9;  
                              break;  
                      case 3: rezultat=3;  
                              break;  
                  }  
                  break;  
    
          case 8: switch(numar%4)  
                  {  
                      case 0: rezultat=6;  
                              break;  
                      case 1: rezultat=8;  
                              break;  
                      case 2: rezultat=4;  
                              break;  
                      case 3: rezultat=2;  
                              break;  
                  }  
                  break;  
    
          case 9: switch(numar%2)  
                 {  
                     case 0: rezultat=1;  
                              break;  
                      case 1: rezultat=9;  
                              break;  
                  }  
                  break;  
      }  
    
      return rezultat;  
  }