Cod sursa(job #136653)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 15 februarie 2008 19:01:39
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2 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;
}