Pagini recente » Cod sursa (job #1806370) | Cod sursa (job #1183361) | Cod sursa (job #1292670) | Cod sursa (job #190320) | Cod sursa (job #8868)
Cod sursa(job #8868)
#include<fstream>
#include<cstdlib>
#include<iostream>
#define inputfile "diviz.in"
#define outputfile "diviz.out"
const int NMAX = 1000;
using namespace std;
int main()
{
int K,A,B,N;
ifstream from (inputfile);
ofstream to (outputfile);
from >> K >> A >> B >> N;
int a[NMAX];
int sol[NMAX];
int aux[NMAX];
int bune[NMAX];
int nr_bune = 0;
int nr_sol = 0;
int i = 0;
while (N != 0)
{
a[i++] = N % 10;
N /= 10;
}
int nr_elem = i;
for (i = 0; i< nr_elem / 2; i++)
swap(a[i],a[nr_elem-i-1]);
for (i = 0; i<nr_elem; i++)
sol[i] = 0;
for (int C = A; C<=B; C++){
int k=0;
sol[k] = 1;
int nr1 = 1;
while (k>=0){
if (nr1 == C){
//
int j = 0;
for (int i = 0; i<nr_elem; i++)
if (sol[i])
aux[j++] = a[i];//*sol[i];
int nr = 0;
for (int i = 0; i< j; i++)
nr = (nr * 10) + aux[i];
//cout<<nr<<'\n';
if (nr % K == 0) {
int i = 0;
while ( (i<nr_bune) && (bune[i] != nr) )
i++;
if (bune[i] != nr) {
nr_sol++;
bune[nr_bune++]=nr;
}
};
//for (int i =0; i<nr_elem; i++) cout<<sol[i]<<' ';
//cout<<'\n';
if (k<nr_elem-1){
sol[k]=0;
sol[++k]=1;
}
else {
sol[k]=0;
nr1--;
while ( (sol[--k] != 1) && (k>=0) );
if (k>=0) {
sol[k]=0;
sol[++k]=1;
}
} // else
} // if
else
if (k<nr_elem-1) {
sol[++k] = 1;
nr1++;
} //if 2
else{
sol[k]=0;
nr1--;
while ( (sol[--k] != 1) && (k>=0) );
if (k>=0) {
sol[k]=0;
sol[++k]=1;
}
}
} //while
} //for
to << nr_sol;
}