Pagini recente » Cod sursa (job #1232887) | Cod sursa (job #1325872) | Cod sursa (job #724951) | Cod sursa (job #863075) | Cod sursa (job #1806236)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
char nr[22];
int n[22],p,lg,i,r,j;
long long d[1<<18][21];///d[i][r] nr de solutii cu restul r al configuratiei i
int main()
{
f>>nr>>p;
for(lg=0;nr[lg];lg++) n[lg]=nr[lg]-48;
d[0][0] = 1;
for(i=0;i< (1<<lg);i++)///pentru toate cele 2^n configuratii
for(r=0;r<p;++r)///pentru fiecare rest de la 0 la p-1
if (d[i][r])
for (j=0;j<lg;++j) ///pentru fiecare cifra a numarului
if ( !((i>>j)&1)) ///daca nu se afla 2 cifre pe aceasi pozitie
{
//int NewNr = i | (1 << j);///formez noua configuratie
//int NewR=r*10+n[j];NewR%=p;///adaug cifra la sfarsit si fac noul rest
d[ i | (1 << j)][(r*10+n[j])%p] += d[i][r];
}
g<<d[(1<<lg)-1][0];
}