Cod sursa(job #465739)

Utilizator DeadEyeNaiba Mihai Lucian DeadEye Data 25 iunie 2010 12:46:08
Problema Ratphu Scor 30
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.76 kb
#include<cstdio>
int nr,nrp,k,cf[21],st[21];
void bb(int x, int ss[21])
{
	if(x!=nr+1)
	{
		for(int i=1;i<=nr;i++)
		{
			ss[x]=i;
			int da=1;
			for(int j=1;j<x;j++)
				if(ss[x]==ss[j])
				{
					da=0;
					break;
				}
			if(da)
				bb(x+1,ss);
		}
	}
	else
	{
		int yt=0;
		for(int i=1;i<=nr;i++)
		{
			int y=cf[ss[i]]%k;
			for(int j=1;j<=nr-i;j++)
			{
				y=(y*10)%k;
				if(y==0)
					break;
			}
			yt=(yt+y)%k;
		}
		if(yt==0)
			nrp++;
	}
}
int main()
{
	char s[30];
	freopen("ratphu.in","r",stdin);
	freopen("ratphu.out","w",stdout);
	gets(s);
	int i,j;
	for(i=0;s[i]!=' ';i++)
	{
		cf[i+1]=s[i]-48;
	}
	k=0;
	for(j=i+1;s[j];j++)
		k=k*10+(s[j]-48);
	nr=i; nrp=0;
	bb(1,st);
	printf("%d\n",nrp);
	return 0;
}