Pagini recente » Cod sursa (job #811866) | Cod sursa (job #745391) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #652604)
Cod sursa(job #652604)
#include<iostream>
#include<fstream>
using namespace std;
long long sol,n;
int st[19],pp,m,c[19];
void numara(int p)
{
long long x;
int v[19],i,j;
for(i=1;i<=m;i++)
v[i]=c[st[i]];
i=1;
while(v[i]==0)
i++;
x=0;
for(j=i;j<=p;j++)
x=x*10+v[i];
if(x%pp==0)
sol++;
}
int valid(int p)
{
int i;
for(i=1;i<=p-1;i++)
if(st[p]==st[i])
return 0;
return 1;
}
inline void bktr(int p)
{
int pval;
for(pval=1;pval<=m;pval++) {
st[p]=pval;
if(valid(p))
if(p==m)
numara(p);
else bktr(p+1);
}
}
int main ()
{
long long x;
int i;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
f>>n>>pp;
f.close();
x=n;
while(x) {
m++;
x=x/10;
}
x=n;
for(i=m;i>=1;i--) {
c[i]=x%10;
x=x/10;
}
bktr(1);
g<<sol;
g.close();
return 0;
}