Cod sursa(job #1444148)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 29 mai 2015 11:45:40
Problema Ratphu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#define NMAX 18	

using namespace std;

int l = 0, n, p, v[NMAX], sol = 0;;
bool viz[NMAX] = { false };

void citeste()
{
	FILE *f = fopen("ratphu.in", "r");
	fscanf(f, "%i%i", &n, &p);
	fclose(f);

	while (n)
	{
		v[l++] = n % 10;
		n /= 10;
	}
}

void dfs(int x)
{
	bool complet = true;
	viz[x] = true;
	n *= 10;
	n += v[x];
	for (int i = 0; i < l; i++)
		if (!viz[i])
		{
			dfs(i);
			complet = false;
		}
	if (complet && n % p == 0)
		sol++;

	n /= 10;
	viz[x] = false;
}

void afiseaza()
{
	FILE *f = fopen("ratphu.out", "w");
	fprintf(f, "%i", sol);
	fclose(f);
}

int main()
{
	citeste();
	for (int i = 0; i < l; i++)
		dfs(i);
	afiseaza();
}