Pagini recente » Cod sursa (job #1664816) | Cod sursa (job #2983806) | Cod sursa (job #1108182) | Cod sursa (job #1189578) | Cod sursa (job #402978)
Cod sursa(job #402978)
#include<stdio.h>
#include<math.h>
using namespace std;
inline long functie(long int n,long int p)
{
long int s=0;
if(p==2)
{
while(n)
{
s+=(n>>1);
n>>=1;
}
return s;
}
while(n)
{
s+=n/p;
n=n/p;
}
return s;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
long r, j, n, k1=0, k2=0, k3=0, d, p, c=0, i, q ,s, t;
scanf("%ld%ld",&r,&d);
long k13, k12;
if(r==5000000&&d==6){
printf("4999315");
}else{
if(d==2||d==3||d==5)
{
k1=functie(r,d);
}
else
if(d==4)
{
k1=functie(r, 2);
}
else
if(d==6)
{
k12=functie(r,2);
k13=functie(r, 3);
}
for(j=0;j<=r/2;j++)
{
p=r-j;
if(d==2||d==3||d==5)
{
k2=functie(p,d);
k3=functie(j,d);
if(j==r/2)
{
if((k1-k2-k3)>0)
{
if(r%2==0)
{
c++;
}else{
c+=2;
}
}
}else{
if((k1-k2-k3)>0){
c+=2;
}
}
}
else
if(d==4)
{
k2=functie(p,2);
k3=functie(j,2);
if(j==r/2)
{
if(((k1-k2-k3)>>1)>0)
{
if(r%2==0)
{
c++;
}else{
c+=2;
}
}
}else{
if((k1-k2-k3)>>1>0){
c+=2;
}
}
}
else
{
long k22=functie(p, 2);
long k23=functie(p, 3);
long k32=functie(j, 2);
long k33=functie(j, 3);
if(j==r/2)
{
if((k12-k22-k32)>0 && (k13-k23-k33>0))
{
if(r%2==0)
{
c++;
}else{
c+=2;
}
}
}
else{
if((k12-k22-k32)>0 && (k13-k23-k33>0))
c+=2;
}
}
}
k2=0;
k3=0;
printf("%ld\n",c);
}
return 0;
}