Cod sursa(job #465765)

Utilizator chiar_nimeninimeni chiar_nimeni Data 25 iunie 2010 13:01:39
Problema Ratphu Scor 30
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.89 kb
# include <stdio.h>
int a[100],sol[100],p,n,nr;
long long x,y;
/*int ok (long k)
{
	int i;
	bool ok1;
	ok1=true;
	for (i=1; i<k; i++)
		if (sol[k]==sol[i])
		{
			ok1=false;
			break;
		}
	if (ok1==true) return 1; 
	else return 0;
}*/

void back ()
{ int i,j,k;
long long y;
bool ok;
	k=1;
	sol[k]=0;
	while (k>0) 
	{
		if (sol[k]<n)
		{
			sol[k]++;
			ok=true;
			for (j=1; j<k; j++)
				if (sol[k]==sol[j])
				{
					ok=false;
					break;
				}
			if (ok==true)
				if (k==n) 
				{
					for (i=1; i<=n; i++)
						y=y*10+a[sol[i]];
					if (y%p==0) nr++;
					y=0;
				}
			else 
			{
				k++;
				sol[k]=0;
			}
		}
		else k--;
	}
}

int main ()
{
freopen ("ratphu.in","r",stdin);
freopen ("ratphu.out","w",stdout);
scanf ("%lld %d",&x,&p);
n=0;
y=x;
while (y>0)
{
	n++;
	a[n]=y%10;
	y/=10;
}
back();
printf ("%d\n",nr);
return 0;
}