Cod sursa(job #7225)

Utilizator mastermageSchneider Stefan mastermage Data 21 ianuarie 2007 13:10:30
Problema Diviz Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 0.63 kb
#include <stdio.h>
#include <string.h>

int d,a,b,res;
char nr[100], viz[100000];

void inputFunc(){
	FILE*fi=fopen("diviz.in","r");
	fscanf(fi,"%d %d %d %s", &d, &a, &b, nr);
	
	fclose(fi);
}

void outputFunc(){
	FILE*fi=fopen("diviz.out","w");
	fprintf(fi,"%d",res);
	fclose(fi);
}

int main(){
	inputFunc();
	int n=strlen(nr), sim=1<<n;		
	for(int i=0;i<n;i++)nr[i]-='0';
	
	while(--sim){
		int cn=0,cp=sim,kc=0,k=-1;
		while(++k, cp){
			if(cp&1)kc++,cn=cn*10 + nr[k];cp>>=1;
		}
		if(kc>=a && kc<=b){
			if(cn%d == 0 && !viz[cn])
				res++;viz[cn]=1;
		}
		
		
		
	}
	
	outputFunc();
	return 0;
}