Cod sursa(job #596771)
| Utilizator | 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;
}
