Cod sursa(job #1318221)

Utilizator Tzappy90Mihalache Constantin Tzappy90 Data 15 ianuarie 2015 19:18:05
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int cif[10][2];
char num[101];
int teste;
int ul(int x){return x%10;}
int sum(int c, int p)
{
	int s=0,i;
	for(i=1;i<=c;i++)
		s+=cif[i][p];
	return s;
}
int main()
{
	int i,j,p=0,c,s=0,ord,k;
	cif[0][0] = 0; cif[0][1] = 0;
	cif[1][0] = 1; cif[1][1] = 1;
	cif[2][0] = 4; cif[2][1] = 6;
	cif[3][0] = 7; cif[3][1] = 3;
	cif[4][0] = 6; cif[4][1] = 6;
	cif[5][0] = 5; cif[5][1] = 5;
	cif[6][0] = 6; cif[6][1] = 6;
	cif[7][0] = 3; cif[7][1] = 7;
	cif[8][0] = 6; cif[8][1] = 4;
	cif[9][0] = 9; cif[9][1] = 1;

	freopen("cifra.in","rt",stdin);
	freopen("cifra.out","wt",stdout);
	scanf("%d",&teste);
	for(k=0;k<teste;k++)
	{
		scanf("%s",num);
		s=0;
		p=0;
		for(i=strlen(num)-1;i>=0;i--)
		{
				ord = strlen(num)-i-2;
				c = num[i]-'0';
				if((int)pow(10,ord)*c==0 && c!=0)
				{
					s+=sum(c,p);
					s = ul(s);
					p=!p;
				}
				else
					for(j=1;j<=(int)pow(10,ord)*c;j++) /*matematic*/
					{
						s+=sum(9,p);
						s=ul(s);
						p = !p;
					}
		}
		printf("%d\n",s);
	}
	return 0;
}