Pagini recente » Cod sursa (job #2702089) | Cod sursa (job #2063615) | Cod sursa (job #1948320) | Cod sursa (job #1018451) | Cod sursa (job #2081942)
/// OrangeWarrior #1
#include<bits/stdc++.h>
using namespace std;
ifstream f("rathpu.in");
ofstream g("rathpu.out");
long long fr[12],sc,nrd,nc,n,sol,nr,nr2,v[19];
bool use[19];
long long fact(int i)
{
if(i<=1)
return 1;
long long sol=1;
for(int j=2;j<=i;++j)
sol*=j;
return sol;
}
void bt(int k)
{
if(k==nc+1){
if(nr%nrd==0)
sol++;
}
else
for(int i=1;i<=nc;++i)
if(!use[i])
{
nr=nr*10+v[i];
use[i]=1;
bt(k+1);
use[i]=0;
nr/=10;
}
}
int main()
{
f>>n>>nrd;
while(n)
{
fr[n%10]++;
sc=0;
++nc;
v[nc]=n%10;
n/=10;
}
if(nrd==1)
sol=fact(nc);
else
if(nrd==2 || (nrd==6 && sc%3==0) || (nrd==18 && sc%9==0))
sol=(fr[0]+fr[2]+fr[4]+fr[6]+fr[8])*fact(nc-1);
else
if((nrd==3 && sc%3==0) || (nrd==9 && sc%9==0))
sol=fact(nc);
else
if(nrd==5 || (nrd==15 && sc%3==0))
sol=(fr[0]+fr[5])*fact(nc-1);
else
if(nrd==10)
sol=fr[0]*fact(nc-1);
else
bt(1);
g<<sol<<'\n';
return 0;
}