Pagini recente » Cod sursa (job #3160064) | Cod sursa (job #2145429) | Cod sursa (job #2906852) | Cod sursa (job #2849514) | Cod sursa (job #2037139)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int v[4][5000005];
int r,d,nr,x,rez;
void umple(int l,int val)
{
for(int i=val;i<=r;i+=val)
{
x=i; nr=0;
while(x%val==0)
{
++nr;
x/=val;
}
v[l][i]=nr;
}
for(int i=1;i<=r;++i)
{
v[l][i]+=v[l][i-1];
}
}
void factoriale()
{
x=d;
if(d==4) x/=2;
if(d==6) x/=3;
umple(1,x);
if(d==6) umple(2,3);
}
bool ver1(int i)
{
return(v[1][r]>v[1][i]+v[1][r-i]);
}
bool ver2(int i)
{
return (v[1][r]>1+v[1][i]+v[1][r-i]);
}
bool ver3(int i)
{
return(v[1][r]>v[1][i]+v[1][r-i] && v[2][r]>v[2][i]+v[2][r-i]);
}
bool cond(int i)
{
if(d==2 || d==3 || d==5) return ver1(i);
if(d==4) return ver2(i);
else return ver3(i);
}
int main()
{
f>>r>>d;
factoriale();
for(int i=0;i<=r;++i)
{
if(cond(i))
{
++rez;
}
}
g<<rez;
return 0;
}