Pagini recente » Cod sursa (job #1257722) | Cod sursa (job #529381) | Cod sursa (job #49600) | Cod sursa (job #814395) | Cod sursa (job #378119)
Cod sursa(job #378119)
#include<iostream>
#include<string>
using namespace std;
#define FOR(i,a,b)for(int i=(a);i<=(b);++i)
#define inf 1000000000
int R,D,ori[5000005][3];
int main()
{
int diviz[3],cat[3],dim=-1,ans=0;
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&R,&D);
int div=2;
while(D!=1)
{
if(D%div==0)
{
diviz[++dim]=div;
cat[dim]=0;
while(D%div==0)
{
++cat[dim];
D/=div;
}
}
++div;
}
FOR(j,0,dim)
ori[0][j]=0;
FOR(i,1,R)
{
int nr=i;
FOR(j,0,dim)
ori[i][j]=ori[i-1][j];
FOR(j,0,dim)
{
int div=diviz[j];
while(nr%div==0)
{
++ori[i][j];
nr/=div;
}
}
}
FOR(i,0,R)
{
int ad=inf;
FOR(j,0,dim)
ad=min(ad,(ori[R][j]-ori[i][j]-ori[R-i][j])/cat[j]);
if(ad) ++ans;
}
printf("%d",ans);
return 0;
}