Pagini recente » Cod sursa (job #936420) | Cod sursa (job #1218560) | Cod sursa (job #1755597) | Cod sursa (job #2641296) | Cod sursa (job #6893)
Cod sursa(job #6893)
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("diviz.in",ios::in);
fstream g("diviz.out",ios::out);
int x[201],k,kk,a,da,b,as,ev,l,nr,nrs;
char s[201] ;
/*void cifre(int &l)
{ int c,i=0;
c=n;
while (c)
{ s[++i]=c%10;
c/=10;
}
l=i;
int aux;
for(i=1;i<=l/2;i++)
{ aux=s[i];
s[i]=s[n-i+1];
s[n-i+1]=aux;
}
} */
void init()
{ x[k]=-1;
/* if(da) {nr--;da=0;} */
}
int succesor()
{ if(x[k]<1&&k<=l)
{x[k]++;
/* if(x[k]==1)
{nr++;da=1;}
else
da=0;*/
return 1;}
else
return 0;
}
int valid()
{ return (k<=l);
}
int solutie()
{ int sum=0,i,nr=0;
for(i=1;i<=l;i++)
if(x[i])
nr++;
if((nr>=a)&&(nr<=b))
{for(i=1;i<=l;i++)
if(x[i])
sum=(sum*10)+(s[i-1]-'0');
if(sum%kk==0)
return 1;
else
return 0;
}
else
return 0;
}
void back()
{ k=1;
nr=0;
nrs=0;
/* da=0;*/
init();
while(k)
{ do
{ as=succesor();
if(as)
ev=valid();
}
while(as&&!ev);
if(as)
if(solutie())
nrs++;
else
{k++,init();}
else
k--;
}
}
int main()
{ f>>kk>>a>>b;
f.get();
f.get(s,201);
l=strlen(s);
back();
g<<(nrs&30103);
f.close();
g.close();
return 0;
}