Pagini recente » Cod sursa (job #554727) | Cod sursa (job #237761) | Cod sursa (job #2810119) | Cod sursa (job #2365271) | Cod sursa (job #734052)
Cod sursa(job #734052)
#include <fstream>
using namespace std;
int x,i,d,n,sol,d1,d2,D,div1[5000010],div2[5000010],div[5000010];
int main()
{
ifstream fi("pascal.in");
ofstream fo("pascal.out");
fi>>n>>D;
if(D==6) { d1=2; d2=3; } else
if(D==4) d1=2; else d1=D;
for(i=1;i<=n;i++)
{
//calculez divizorii pentru i!
x=i;
while(x%d1==0) { div1[i]++; x/=d1; }
div1[i]+=div1[i-1];
if(d2!=0)
{
while(x%d2==0) { div2[i]++; x/=d2; }
div2[i]+=div2[i-1];
}
if(D==4) div[i]=div1[i]/2; else
if(D==6) div[i]=min(div1[i],div2[i]); else
div[i]=div1[i];
}
for(i=0;i<=n;i++) if(div[n]>div[i]+div[n-i]) sol++;
fo<<sol<<"\n";
return 0;
}