Pagini recente » Cod sursa (job #2025852) | Cod sursa (job #2682046) | Rating UNIBUC Harsan Bicsi Baltatu (echipa_BoSSilor) | Cod sursa (job #209944) | Cod sursa (job #465745)
Cod sursa(job #465745)
#include<fstream>
#include<algorithm>
using namespace std;
int v[20], v2[20], n=0;
inline long long giveN(){long long nr=0; for(int i=0; i<n; ++i) nr=nr*10+v[v2[i]]; return nr; } // se mai pot face optimizari pt. diferite valori al lui p
inline long long fact(int f){long long fact=1; for(int i=1; i<=f; ++i) fact*=i; return fact; }
int main()
{
long long aux, p, nr=0, sumcif=0, cif2=0, cif0=0, cif5=0;
ifstream f("ratphu.in");
f>>aux>>p;
while(aux)
{
v[n]=aux%10;
sumcif+=v[n];
if(v[n]%2==0)
++cif2;
if(v[n]==0)
++cif0;
if(v[n]==5)
++cif5;
v2[n]=n;
aux/=10;
++n;
}
ofstream g("ratphu.out");
if(p==1)
{
g<<fact(n);
g<<'\n';
g.close();
return 0;
}
if(p==2)
{
g<<cif2*fact(n-1);
g<<'\n';
g.close();
return 0;
}
if(p==3)
{
if(sumcif%3==0)
g<<fact(n);
else
g<<0;
g<<'\n';
g.close();
return 0;
}
if(p==5)
{
g<<fact(n-1)*(cif5+cif0);
g<<'\n';
g.close();
return 0;
}
if(p==6)
{
if(sumcif%3==0)
g<<cif2*fact(n-1);
else
g<<0;
g<<'\n';
g.close();
return 0;
}
if(p==9)
{
if(sumcif%9==0)
g<<fact(n);
else
g<<0;
g<<'\n';
g.close();
return 0;
}
if(p==10)
{
g<<fact(n-1)*cif0;
g<<'\n';
g.close();
return 0;
}
if(p==12)
{
if(sumcif%3!=0)
{
g<<0;
g<<'\n';
g.close();
return 0;
}
}
if(p==15)
{
if(sumcif%3==0)
g<<fact(n-1)*(cif0+cif5);
else
g<<0;
g<<'\n';
g.close();
return 0;
}
if(p==18)
{
if(sumcif%9==0)
g<<fact(n-1)*cif2;
else
g<<0;
g<<'\n';
g.close();
return 0;
}
sort(v, v+n);
do{
if(giveN()%p==0)
++nr;
}while(next_permutation(v2, v2+n));
g<<nr;
g<<'\n';
g.close();
return 0;
}