Pagini recente » Cod sursa (job #403455) | Cod sursa (job #442330) | Cod sursa (job #690576) | Cod sursa (job #2025266) | Cod sursa (job #2337548)
#include <fstream>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
int cifre[25],resturi[1<<18][25];
int nr_cifre(long x)
{
int nr = -1;
while(x)
{
cifre[++nr] = x%10;
x/=10;
}
return nr+1;
}
int main()
{ long N;
int P;
fin >> N >> P;
int n = nr_cifre(N);
for(int i = 0 ; i < n ; i ++)
resturi[1<<i][cifre[i]%P] = 1 ;
for(int configuratie = 1 ; configuratie < (1<<n)-1 ; configuratie++)
for(int i = 0 ; i < P ; i++)
if(resturi[configuratie][i])
for(int j = 0 ; j < n ; j++)
if((configuratie|(1<<j)) != configuratie)
resturi[configuratie|(1<<j)][(10*i+cifre[j])%P] += resturi[configuratie][i] ;
fout << resturi[(1<<n)-1][0] << "\n";
return 0;
}