Cod sursa(job #557645)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 16 martie 2011 19:07:41
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
int s,i,n,m,d,nr,k,q;

int exp(int n,int div)
{
	for (s=0;n/div>0;s+=n/div,div*=d);
	return s;
}

int main()
{
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	scanf("%d%d",&n,&d);
	if (d==2||d==3||d==5)
	{
		k=exp(n,d);
	
		for (i=1;i<=n/2;i++)
			if (exp(i,d)+exp(n-i,d)<k) nr+=2;
		if (!(n%2)) if (exp(n/2,d)+exp(n/2,d)<k) nr--;
	}
	if (d==4)
	{
		k=exp(n,2);
	
		for (i=1;i<=n/2;i++)
			if (exp(i,2)+exp(n-i,2)+1<k) nr+=2;
		if (!(n%2)) if (exp(n/2,d)+exp(n/2,d)+1<k) nr--;
	}
	if (d==6)
	{
		k=exp(n,2);
		q=exp(n,3);
		
		for (i=1;i<=n/2;i++)
			if (exp(i,2)+exp(n-i,2)<k&&exp(i,3)+exp(n-i,3)<q) nr+=2;
		if (!(n%2)) if (exp(n/2,2)+exp(n/2,2)<k&&exp(n/2,3)+exp(n/2,3)<q) nr--;
	}
	printf("%d\n",nr);
	return 0;
}