Pagini recente » Cod sursa (job #1239130) | Cod sursa (job #481944) | Cod sursa (job #925032) | Cod sursa (job #86675) | Cod sursa (job #1146202)
#include<cstdio>
#include<iostream>
using namespace std;
int R , D , rez , nr , num , nr1 , num1 , N;
int find(int d , int n);
int main()
{
freopen("pascal.in" , "r" , stdin );
freopen("pascal.out" , "w" , stdout );
scanf("%d%d" , &R , &D );
if(D == 4)
{
nr = find(2,R);
for(int i = 1 ; i <= (R-1)/2 ; ++i )
{
num = find(2,R-i) + find(2,i);
rez +=(nr-num>1);
}
rez = 2*rez;
if((R-1)%2)
{
num = find(2,R-((R-1)/2+1)) + find(2,(R-1)/2+1);
rez += (nr - num >1);
}
}
else
if(D == 6)
{
nr = find(2,R);
nr1 = find(3,R);
for(int i = 1 ; i <= (R-1)/2 ; ++i )
{
num = find(2,R-i)+find(2,i);
num1 = find(3,R-i)+find(3,i);
rez += (nr1 > num1 && nr > num);
}
rez = rez*2;
if((R-1)%2)
{
int mij = (R-1)/2+1;
num = find(2,R-mij)+find(2,mij);
num1 = find(3,R-mij)+find(3,mij);
rez += (nr1 > num1 && nr > num);
}
}
else
{
nr = find(D,R);
for(int i = 1 ; i<= (R-1)/2 ; ++i )
{
num = find(D,R-i)+find(D,i);
rez += (nr> num);
}
rez = rez*2;
if((R-1)%2)
{
int mij = (R-1)/2+1;
num = find(D,R-mij)+find(D,mij);
rez += (nr> num);
}
}
printf("%d" , rez);
return 0;
}
int find(int d , int n)
{
int aux = d , ret = 0;
while(aux <= n)
{
ret += n/aux;
aux *=d;
}
return ret;
}