Pagini recente » Cod sursa (job #157355) | Cod sursa (job #62482) | Cod sursa (job #2963080) | Cod sursa (job #620811) | Cod sursa (job #1319831)
#include<fstream>
#include<string>
using namespace std;
ifstream fi("ratphu.in");
ofstream fo("ratphu.out");
const int MAX_CONFIG = (1<<20)+5;
const int MAX_P = 20;
long long d[MAX_CONFIG][MAX_P]; // d[mask][r] - cate permutari formate din cifrele
// configuratiei mask dau restul r
long long mask,nr_config;
int i,j,k,rest,p,n,c[MAX_P];
string s;
int main(){
fi>>s>>p; n=s.length();
for(i=0;i<n;++i) c[i]=s[i]-'0';
d[0][0]=1;
nr_config=(1<<n);
for(mask=0; mask<nr_config; ++mask)
for(j=0; j<n; ++j)
if((mask&(1<<j))==0)
for(k=0; k<p; ++k)
if(d[mask][k]!=0){
rest=(10*k+c[j])%p;
d[mask|(1<<j)][rest]+=d[mask][k];
}
fo<<d[(1<<n)-1][0];
fi.close();
fo.close();
return 0;
}