高级天翼
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
初级天翼
抢沙发专业户来了:
整形 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过的
望采纳~
中级启示者