/* 程序问题注释开始
-
程序的版权和版本声明部分
-
Copyright © 2020,湖南工程职业技术学院信息工程学院学生
-
All rights reserved.
-
文件名称: 蓝桥杯赛题
-
作 者: 李 斌
-
完成日期: 2020 年 04 月 06日
-
版 本 号: 016
-
对任务及求解方法的描述部分
-
问题描述
给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
如5的二进制为101,包含2个“1”。 -
输入格式
第一行包含2个数L,R -
输出格式
一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。 -
样例输入
2 3 -
样例输出
3 -
数据规模和约定
L<=R<=100000; -
程序问题注释结束
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
//用户输入数据范围
int n=in.nextInt();
int m=in.nextInt();
in.close();
//计数
int count=0;
for(int i=n;i<=m;i++)
{
int temp=i;
//计算1的个数
while(temp>0)
{
//当前位为1
if((temp&1)==1)
{
count++;
}
//右移1位
temp>>=1;
}
}
//输出1的总个数
System.out.println(count);
}
}
运行结果: