方法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;} }