#include <stdio.h>
#include <math.h>
int main()
{
int m=1,n=1;
int i,j=0;
int zui;
while(scanf("%d%d",&m,&n)!=EOF&&m!=0&&n!=0)
{
int k=ceil(log2(n+1));
int s=pow(2,k)-1;
for(i=1;m<n;i++)
{
m=m*2;
if(m>s)
{
m=m/2;
break;
}
}
int shendu=i;
int cc=pow(2,shendu-1);
if(m<=n)
{
if(m+cc-1<n)
{
zui=(pow(2,shendu)-1);
}else{
zui=(pow(2,shendu-1)-1)+(n-m+1);
}
}else{
zui=(pow(2,shendu-1)-1);
}
printf("%d\n",zui);
}
}
0.0分
1 人评分
本人酷爱递归实现很多问题,这里也是浏览:561 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:745 |
1128题解(返回值为数组的情况)浏览:475 |
矩阵乘方 (C语言代码)浏览:1035 |
【偶数求和】 (C语言代码)浏览:432 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:542 |
Quadratic Equation (C语言代码)浏览:989 |
简单的a+b (C语言代码)浏览:466 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:729 |
很简单,,题解1041:C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:599 |