Cod sursa(job #596771)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 19 iunie 2011 14:14:45
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include<cstdio>

using namespace std;

int main()
{
    int aux,i,n,d,sol=0,cnt,cnt2;
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	scanf("%d%d",&n,&d);
	for(i=1;i<=n/2;++i)
	{
	    cnt=0;cnt2=0;
		if (d==2||d==3||d==5)
		{
		    aux=n-i+1;
		    while(aux%d==0)
            {
                ++cnt;
                aux/=d;
            }
            aux=i;
            while(aux%d==0)
            {
                --cnt;
                aux/=d;
            }
            if (cnt)
                sol+=2;
		}
        else if (d==4)
        {
            aux=n-i+1;
		    while(aux%2==0)
            {
                ++cnt;
                aux/=2;
            }
            aux=i;
            while(aux%2==0)
            {
                --cnt;
                aux/=2;
            }
            if (cnt>1)
                sol+=2;

        }
        else
        {
            aux=n-i+1;
		    while(aux%2==0)
            {
                ++cnt;
                aux/=2;
            }
            aux=i;
            while(aux%2==0)
            {
                --cnt;
                aux/=2;
            }
            if (cnt>1)
                sol+=2;
            aux=n-i+1;
		    while(aux%2==0)
            {
                ++cnt2;
                aux/=2;
            }
            aux=i;
            while(aux%2==0)
            {
                --cnt2;
                aux/=2;
            }
            if (cnt&&cnt2)
                sol+=2;
        }
	}
	if (n%2==0)
        --sol;
	printf("%d\n",sol);
	return 0;
}