Pagini recente » Cod sursa (job #149096) | Cod sursa (job #1521639) | Cod sursa (job #1547556) | Cod sursa (job #137729) | Cod sursa (job #247514)
Cod sursa(job #247514)
#include<algorithm>
using namespace std;
int r,d;
void solve(){
int i,x,exp1,exp2,exp3,k=0;
scanf("%d%d",&r,&d);
if(d==4){
if(r%2==0){
for(i=0; i<r/2; ++i){
for(x=r,exp1=0; x; exp1+=x/=2);
for(x=i,exp2=0; x; exp2+=x/=2);
for(x=r-i,exp3=0; x; exp3+=x/=2);
if(exp1/2>exp2/2+exp3/2)
k+=2;}
for(x=r,exp1=0; x; exp1+=x/=2);
for(x=r/2,exp2=0; x; exp2+=x/=2);
for(x=r/2+1,exp3=0; x; exp3+=x/=2);
if(exp1/2>exp2/2+exp3/2)
++k;}
else if(r%2==1)
for(i=0; i<=r/2; ++i){
for(x=r,exp1=0; x; exp1+=x/=2);
for(x=i,exp2=0; x; exp2+=x/=2);
for(x=r-i,exp3=0; x; exp3+=x/=2);
if(exp1/2>exp2/2+exp3/2)
k+=2;}}
else{
if(r%2==0){
for(i=0; i<r/2; ++i){
for(x=r,exp1=0; x; exp1+=x/=d);
for(x=i,exp2=0; x; exp2+=x/=d);
for(x=r-i,exp3=0; x; exp3+=x/=d);
if(exp1>exp2+exp3)
k+=2;}
for(x=r,exp1=0; x; exp1+=x/=d);
for(x=r/2,exp2=0; x; exp2+=x/=d);
for(x=r/2+1,exp3=0; x; exp3+=x/=d);
if(exp1>exp2+exp3)
++k;}
else if(r%2==1)
for(i=0; i<=r/2; ++i){
for(x=r,exp1=0; x; exp1+=x/=d);
for(x=i,exp2=0; x; exp2+=x/=d);
for(x=r-i,exp3=0; x; exp3+=x/=d);
if(exp1>exp2+exp3)
k+=2;}}
printf("%d",k);}
int main(){
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
solve();
return 0;}