方法1:
#include <cstdio>
using namespace std;
int main(){
int m;
int n;
while(scanf("%d%d",&m,&n)!=EOF && m!=0 && n!=0){
int answer = 0;
if(m == n){
answer = 1;
}else if(m <= n){
answer = 1;
int left = 2 * m;
int right = 2 * m + 1;
while(right < n){
answer += right - left + 1;
left = 2 * left;
right = 2 * right + 1;
}
if(n >= left){
answer += n - left + 1;
}
}
printf("%d\n",answer);
}
return 0;
}方法二:
#include <iostream>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n&&(m!=0||n!=0)){
int t=1,s=0,sum=1;
int i=m;
while(i<n){
i=2*i+1;
s++;
}
for(int j=s-1;j>0;j--){
t=t*2;
sum=sum+t;
}
t=t*2;
if(n-m*t>=0)sum=sum+n-(m*t)+1;
cout<<sum<<endl;}
}

京公网安备 11010502036488号