Pagini recente » Cod sursa (job #2798271) | Cod sursa (job #3041047) | Cod sursa (job #2275167) | Cod sursa (job #2279801) | Cod sursa (job #961767)
Cod sursa(job #961767)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
long R,D;
int ExtrageExponent(long n,int D)
{
if(D==4)return ExtrageExponent(n,2)/2;
else
if(D==6)
{
int doi=ExtrageExponent(n,2);
if(doi==0)return 0;
else
{
int trei=ExtrageExponent(n,3);
return min(doi,trei);
}
}
else
{
int Exp=0;
long x=D;
while((n>=x)!=0)
{
Exp+=(n/x);
x*=D;
}
return Exp;
}
}
bool Valid(int n,int k)
{
int PutereD=ExtrageExponent(n,D)-ExtrageExponent(n-k,D)-ExtrageExponent(k,D);
if(PutereD>0)return true;
return false;
}
long Numara(int R,int D)
{
long nr=0,mijloc=R/2;
if(R % 2==0)
{
mijloc--;
if(Valid(R,R/2)==true)nr++;
}
for(int j=1;j<=mijloc;j++)
if(Valid(R,j)==true)nr+=2;
return nr;
}
int main ()
{
f>>R>>D;
g<<Numara(R,D)<<'\n';
f.close();g.close();
return 0;
}