Cod sursa(job #487344)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 24 septembrie 2010 19:12:03
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<cstdio>
#include<cstring>
using namespace std;

int v[]={0,1,5,2,8,3,9,2,8,9};

void div(int *A,int nr)
{
	for(int i=A[0],t=0;i>=1;i--, t%=nr)
		A[i]=(t=t*10+A[i])/nr;
	while(A[A[0]]==0 && A[0]>1)
		A[0]--;
}

int mod(int *A,int nr)
{
	int t=0;

	for(int i=A[0];i>=1;i--)
		t=(t*10+A[i])%nr;
	return t;
}

int solve(int *A,int rest)
{
	return (((A[1]*9)%10)+v[rest])%10;

}

int main()
{
	FILE *f=fopen("cifra.in","r");
	FILE *g=fopen("cifra.out","w");

	int t;
	fscanf(f,"%i\n",&t);

	char s[110];
	int A[110];
	for(int i=0;i<t;i++)
	{
		memset(A,0,sizeof(int));
		fgets(s,110,f);
		int crt=1;
		for(int j=strlen(s)-2;j>=0;j--)
			A[crt++]=s[j]-'0';
		A[0]=crt-1;
		int rest=mod(A,9);
		div(A,9);
		fprintf(g,"%i\n",solve(A,rest));
	}
	fclose(f);
	fclose(g);
}