Pagini recente » Cod sursa (job #2639398) | Cod sursa (job #2721421) | Cod sursa (job #3240100) | Cod sursa (job #1837935) | Cod sursa (job #52934)
Cod sursa(job #52934)
#include<stdio.h>
#include<string.h>
long r,s;
int d,a[5000],rr[5000],ee[5000],ww[5000],q;
void citire()
{
freopen("pascal.in","r",stdin);
scanf("%lu%d",&r,&q);
fclose(stdin);
}
void desc(long w,int a[5000])
{
int d=2,max=0;
while (w>1)
{
if (w % d==0)
{
a[d]++;
w/=d;
if (d>max)
max=d;
}
else d++;
}
a[0]=max;
}
void fct(long w,int q[5000])
{
long d;
memset(q,0,sizeof(q));
for (int i=1; i<=a[0]; i++)
{
if (a[i]!=0)
{
d=i;
while (w/d>0)
{
q[i]+=w/d;
d*=i;
}
}
}
q[0]=a[0];
}
void calcul()
{
fct(r,rr);
for (long i=2; /*i<=(r/2)*/i<=r; i++)
{
fct(r-i,ee);
fct(i,ww);
int m=ww[0];
if (rr[0]>m)
m=rr[0];
if (ee[0]>m)
m=ee[0];
for (long j=1;j<=m; j++)
{
ee[j]=rr[j]-(ee[j]+ww[j]);
if (a[j]>0 || a[j]-ee[j]>0)
s++;
}
}
}
void scriere()
{
freopen("pascal.out","w",stdout);
printf("%ld",s);
fclose(stdout);
}
int main()
{
citire();
memset(a,0,sizeof(a));
desc(q,a);
calcul();
scriere();
return 0;
}