Cod sursa(job #652604)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 25 decembrie 2011 13:15:32
Problema Ratphu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<iostream>
#include<fstream>
using namespace std;
long long sol,n;
int st[19],pp,m,c[19];
void numara(int p)
{
	long long x;
	int v[19],i,j;
	for(i=1;i<=m;i++)
		v[i]=c[st[i]];
	i=1;
	while(v[i]==0)
		i++;
	x=0;
	for(j=i;j<=p;j++)
		x=x*10+v[i];
	if(x%pp==0)
		sol++;
}
int valid(int p) 
{
	int i;
	for(i=1;i<=p-1;i++)
		if(st[p]==st[i])
			return 0;
	return 1;
}
inline void bktr(int p)
{
	int pval;
	for(pval=1;pval<=m;pval++) {
		st[p]=pval;
		if(valid(p)) 
			if(p==m)
				numara(p);
			else bktr(p+1);
	}
}
int main ()
{
	long long x;
	int i;
	ifstream f("ratphu.in");
	ofstream g("ratphu.out");
	f>>n>>pp;
	f.close();
	x=n;
	while(x) {
		m++;
		x=x/10;
	}
	x=n;
	for(i=m;i>=1;i--) {
		c[i]=x%10;
		x=x/10;
	}
	bktr(1);
	g<<sol;
	g.close();
	return 0;
}