Cod sursa(job #710974)

Utilizator grannyAlexandru Marian Alexandru granny Data 11 martie 2012 03:31:14
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include "stdio.h"
#include "string.h"



int pow2(int a,int b)

{
	
	int i,putere=a;
	
	for (i=2;i<=b;i++)
			putere=putere*a;
	
return putere;	
	
}

int det_numar(char numar[101])
{
	
	int baza,exponent,lungime;
	lungime=strlen(numar);
	
	
	if (lungime>1) 
				{
					
					baza=numar[lungime-1]-'0';
					exponent=(numar[lungime-2]-'0')*10+baza;
					return exponent;
					
				} else	
						{
							baza=numar[lungime-1]-'0';
							return baza;
						}
						
}
	
	
int ultima_cifra(int numar)
{

int rest,baza=numar%10;
	
		
switch(baza)
     {
			
		case 1: return 1;
		case 2: if (numar%4!=0) return pow2(2,numar%4)%10; else return 6;
		case 3: return pow2(3,numar%4)%10;
		case 4: if (numar%2==0) return 6; else return 4;
		case 5: return 5;
		case 6: return 6;
		case 7: if (numar%4!=0) return pow2(7,numar%4)%10; else return 1;
		case 8: if (numar%4!=0) return pow2(8,numar%4)%10; else return 6;
		case 9: if (numar%2==0) return 1; else return 9;
		case 0: return 0;
     }
		
			 	
				
}

int main()
{
	
	
	
	FILE *f,*g;
	
	int t,suma=0,nr,i;
	char numar[111];
	
	
	f=fopen("cifra.in","r");
	g=fopen("cifra.out","w");
	
	
	//Citim pe T;
	
	fscanf(f,"%d",&t);
	
	for (i=0;i<t;i++)
		{
			
			//Citim cele N numere , ca sir de caractere
			fscanf(f,"%s",&numar);
			nr=ultima_cifra(det_numar(numar));
			suma=(suma+nr)%10;
			fprintf(g,"%d\n",suma);	
		
			
		}
	
	
	
	
	
	fclose(g);
	
	return 0;
}