Pagini recente » Cod sursa (job #1179626) | Cod sursa (job #170720) | Cod sursa (job #2213269) | Cod sursa (job #2596941) | Cod sursa (job #7030)
Cod sursa(job #7030)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream.h>
FILE *f,*g;
int p, A,B;
int st[200],as,ev,nr,l,ls;
char N[200], sol[50][200];
void pune(char s[200])
{
int i,g=0;
for(i=1;i<=ls;i++)
if(strcmp(sol[i],s)==0) g=1;
if(!g) {
strcpy(sol[++ls],s);
}
}
void init(int k)
{
if (k==1)
st[k]=0;
else
st[k]=st[k-1];
}
int succesor(int k)
{
if(st[k]<strlen(N))
{
st[k]++;
return 1;
}
else
return 0;
}
int validare(int k)
{
return 1;
}
int solutie(int k)
{
if (k==l)
{
char N1[200];
int j=1,q=0,x;
for(int i=0;i<=strlen(N);i++)
if (i!=st[j]-1) N1[q++]=N[i];
else j++;
N1[q]='\0';
if (N1[0]=='0') return 0;
else
{
x=atoi(N1);
if(x%p==0) { pune(N1);
return 1;
}
else return 0;
}
}
else return 0;
}
void back(int k)
{
k=1;
init(k);
while(k>0)
{
do
{
as=succesor(k);
if(as)
ev=validare(k);
}
while((as==1)&&(ev==0));
if(as)
{
if(solutie(k));
else
{
if(k<l)
{
k++;
init(k);
}
}
}
else
k--;
}
}
int main()
{
f=fopen("diviz.in","r");
g=fopen("diviz.out","w");
fscanf(f,"%d",&p);
fscanf(f,"%d",&A);
fscanf(f,"%d",&B);
fscanf(f,"%s",&N);
int x=atoi(N);
if (x%p==0) pune(N);
for(l=strlen(N)-B+1;l<=(strlen(N)-A);l++)
back(1);
fprintf(g,"%d",ls);
fcloseall();
return 0;
}