Cod sursa(job #465667)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 25 iunie 2010 11:32:58
Problema Ratphu Scor 30
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.77 kb
#include <stdio.h>

int A[25], BX[25], viz[25];
int N, P, C, X;

/*void af() {
	for (int i = 1; i <= A[0]; ++i)
		printf("%d", BX[i]);
	printf("\n");
}*/

int imp() {
	int i, t = 0;
	for (i = 1; i <= A[0]; ++i){
		t = t * 10 + BX[i];
		t %= P;		
	}	
	return t;
}

void perm (int k) {
	int i;
	if (k - 1 == A[0]) {
		if (!imp()) ++C/*, af()*/;  
		return;
	}
	for (i = 1; i <= A[0]; ++i) {
		if (!viz[i]){
			BX[k] = A[i];
			
			viz[i] = 1;
			perm (k + 1);
			viz[i] = 0;
		}
	}
}

int main () {
	
	freopen("ratphu.in", "r", stdin);
	freopen("ratphu.out", "w", stdout);
	
	do {
		scanf("%c", &X);
		A[ ++A[0] ] = X - '0';
		
	} while (X != ' ');
	A[ A[0]-- ] = 0;
	
	scanf("%d", &P);
	
	perm(1);
	
	printf("%d", C);
	
	return 0;
}