Cod sursa(job #1522693)
Utilizator | Data | 11 noiembrie 2015 21:56:23 | |
---|---|---|---|
Problema | Pascal | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.94 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
int n,d;
int nr_fact(int n,int k)
{
int nr = 0;
for(int i=k;i<=n;i*=k)
nr+=n/i;
return nr;
}
int main()
{
in>>n>>d;
in.close();
long long int nr = 0;
int fact1,fact2,fact;
for(int i = 0;i<=n/2;i++)
{
if((d==2) || (d==3) || (d==5))
{
fact1 = nr_fact(n,d) - (nr_fact(n-i,d) + nr_fact(i,d));
if(fact1 > 0)
{
if(n%2==1)
nr+=2;
else
{
if(i==n/2)
nr+=1;
else
nr+=2;
}
}
}
else
if(d==4)
{
fact1 = nr_fact(n,2) - (nr_fact(n-i,2) + nr_fact(i,2));
if(fact1 >= 2)
{
if(n%2==1)
nr+=2;
else
{
if(i==n/2)
nr+=1;
else
nr+=2;
}
}
}
else
if(d==6)
{
fact1 = nr_fact(n,2) - (nr_fact(n-i,2) + nr_fact(i,2));
fact2 = nr_fact(n,3) - (nr_fact(n-i,3) + nr_fact(i,3));
fact = min(fact1,fact2);
if(fact >= 1)
{
if(n%2==1)
nr+=2;
else
{
if(i==n/2)
nr+=1;
else
nr+=2;
}
}
}
}
out<<nr<<'\n';
out.close();
return 0;
}