问题标题: 酷町堂:6750   "1"的个数

0
0
已解决
熊智晖
熊智晖
高级天翼
高级天翼

6750   "1"的个数

经验值:1600 时间限制:1000毫秒

题目描述 Description

整数a,b,在闭区间[a,b]范围内,找出整数转换为二进制之后1的个数为质数的总数目。

输入描述 Input Description

一行:空格隔开的两个整数a,b

输出描述 Output Description

共1行
输出满足题目条件的总个数

样例输入 Sample Input

【样例输入1】 6 10 【样例输入2】 10 15

样例输出 Sample Output

【样例输出1】 4 【样例输出2】 5

数据范围及提示 Data Size & Hint

【样例1说明】
6 -> 110 (二进制中有2 个1,2 是质数)
7 -> 111 (二进制中有3 个1,3 是质数)
9 -> 1001 (二进制中有2 个1,2 是质数)
10-> 1010 (二进制中有2 个1,2 是质数)
【样例2说明】
10 -> 1010 (2 个1, 2 是质数)
11 -> 1011 (3 个1, 3 是质数)
12 -> 1100 (2 个1, 2 是质数)
13 -> 1101 (3 个1, 3 是质数)
14 -> 1110 (3 个1, 3 是质数)
15 -> 1111 (4 个1 4 不是质数)
【数据说明】
1≤a≤b≤106
且b-a的最大值为10000


0
已采纳
潘艺博
潘艺博
初级天翼
初级天翼

抢沙发专业户来了:

整形 a,b,ans,cnt,w;//这块定义不用说
布尔型 f ( 整形  n ){//这一块是函数
    判断(n 小于 2){
       返回 false;
    }
    循环(2~sqrt ( n ) ){
        判断 (n % i 等于 0){
            返回 false;
        }
    }
   返回 true;
}
核心:
    输入 a b;
    循环(a~b){
        w 等于 i;
        while(w){
            判断 ((w 按位与 1) 等于 1){//按位与:&
                cnt 加一;
            }
            w 等于 w>>1;
        }
        判断 (f ( cnt ) ){
            ans 加一 ;
        }
        cnt 清零;
    }
    输出 ans;//结束

AC过的

望采纳~

 

0
0
俞景熙
俞景熙
高级守护
高级守护

先化二进制,再统计,再判断质数

 

0
0
0
0
潘艺博
潘艺博
初级天翼
初级天翼

对了,你们看看巨佬杜:

他满级了!!!

0
0
我要回答