Cod sursa(job #465978)

Utilizator cristian9Cristian Zloteanu cristian9 Data 25 iunie 2010 16:51:33
Problema Ratphu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<stdio.h>
int n=1,fol[101],v[101], k, u[101], q, nr, j; 

void perm(int poz){
	int i, a=1;
	if(poz==n+1){
		//for(i=1;i<=n;i++){
		//	printf("%d",u[v[i]]);
		//}
		//printf("\n");
		for(i=1; i<=n; i++){
			for(j=1; j<i; j++){
				a=a*10;
			}
			nr+=u[v[i]]*a;
			//printf("%d", u[v[i]]);
		}
		if(nr%k==0){
			q++;
		}
		a=1;
		nr=0;
		//printf("\n");
	}
	else{
		for(i=1;i<=n;i++){
			if(fol[i]==0){
				v[poz]=i;
				fol[i]=1;
				perm(poz+1);
				fol[i]=0;
			}
		}
	}
}

int  main(){
	freopen("ratphu.in","r",stdin);
	freopen("ratphu.out","w",stdout);
	
	//scanf("%d",&n);
	
	char c=0;
	
	while(c!=' '){
		scanf("%c", &c);
		u[n]=c-'0';
		n++;
	}
	
	n-=2;
	scanf("%d ", &k);
	//printf("%d\n", n);
	
	perm(1);
	printf("%d ", q);
	
	return 0;
}












/*#include<stdio.h>

int n=1, k, v[20], q=0, nr, j;

void back(int poz){
	int i, a=1;
	if(poz==n+1){
		for(i=1; i<=n; i++){
			for(j=1; j<i; j++){
				a=a*10;
			}
			nr+=v[i]*a;
			printf("%d", v[i]);
		}
		if(nr%k==0){
			q++;
		}
		a=1;
		nr=0;
		printf("\n");
	}
	else{
		for(i=1; i<=n; i++){
				v[poz]=i;
				back(poz+1);
		}
	}
}

int main(){
	freopen ("ratphu.in", "r", stdin);
	freopen ("ratphu.out", "w", stdout);
	
	char c=0;
	
	while(c!=' '){
		scanf("%c", &c);
		v[n]=c-'0';
		n++;
	}
	n-=2;
	scanf("%d ", &k);
	printf("%d\n", n);
	
	back(1);
	printf("%d ", q);
	return 0;
}*/