Pagini recente » Cod sursa (job #2234806) | Cod sursa (job #2249207) | Cod sursa (job #1017778) | Cod sursa (job #2344650) | Cod sursa (job #7206)
Cod sursa(job #7206)
# include <fstream.h>
# include <string.h>
# define input "diviz.in"
# define output "diviz.out"
# define max 202
char s[max];
long x[max],i,j,n,a,b,l,sol[max],rez,r;
void back(int k);
int main ()
{
ifstream fin ( input );
ofstream fout ( output ) ;
fin >> n >> a >> b;
fin>>s;
l = strlen(s);
for(i = 1;i<=l;i++)
x[i] = s[i-1] -'0';
back(1);
fout <<rez;
return 0;
}
void verifica(int poz)
{
for(r = 0 , j = 1; j<=poz; j++)
r = ( 10*r + x[sol[j]]) % n ;
if(r == 0)
rez++;
if(rez == 30103)
rez = 0;
}
int ok(int k,int i)
{
int gasit;
if(k == 1 && x[i] == 0)
return 0;
for(int j = i-1;j>=k;j--)
if(x[j] == x[i])
{
gasit = 0;
for(int val= 1;val<k;++val)
if(sol[val] == j)
gasit =1;
if(!gasit)
return 0;
}
return 1;
}
void back(int k)
{
if(k <= b)
{
if(k > a)
verifica(k-1);
for(int i = sol[k-1]+1;i<=l;i++)
if(ok(k,i))
{
sol[k] = i;
back(k+1);
}
}
else
verifica(k-1);
}