Cod sursa(job #2254070)
Utilizator | Data | 4 octombrie 2018 19:14:59 | |
---|---|---|---|
Problema | Ratphu | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <bits/stdc++.h>
#define Dim 20
using namespace std;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
unsigned long long N,P,cnt,numar,pr=1,ans;
int C[Dim],Nr[13],R[13];
void BKT(int k)
{
if(k==cnt+1)
{
if(numar%P==0) ans++;
}
else
for(int i=1;i<=cnt;i++)
if(R[C[i]]+1<=Nr[C[i]])
{
R[C[i]]++;
numar+=i*pr;
pr*=10;
BKT(k+1);
numar-=i*pr;
pr/=10;
R[C[i]]--;
}
}
int main()
{
f>>N>>P;
while(N)
{
C[++cnt]=N%10;
Nr[C[cnt]]++;
N/=10;
}
BKT(1);
g<<ans;
return 0;
}