二进制中的第k个1的值2
提交数: 9, 通过率: 55.56%, 平均分: 84.89
题目描述:
给定 n 个询问,每次询问内容是:
在正整数x中,从低位开始,第 k 个 1 的值对应是多少。
比如说,在5中,第二个 1 对应的值为 4,因为 5 的二进制是 101,第二个 1 对应的值是 100,也就是 4。
温馨提示: 这道题请用 lowbit 函数实现。并且需要使用快读。
核心代码可以这样写:
int x,n,k;
n = read();
for(int i = 1;i <= n ;i ++){
x = read(), k = read();
write(solve(x,k));
puts("");
}
输入格式:
第一行一个整数 n。 接下来 n 行每行两个数 x 和 k (k <= x的二进制 中 1的个数)。
输出格式:
对于每个询问,输出对应的答案,每个答案独占一行。
数据范围:
测试点30%, 满足 1≤n≤100。
测试点60%, 满足 1≤n≤1000。
测试点100%, 满足 1≤n≤5e6 ,0≤x ≤1e9 , 1≤k≤x的二进制中1的个数。
样例输入:
样例1: 2 5 2 7 2 样例2: 2 8 1 6 1
样例输出:
样例1: 4 2 样例2: 8 2时间限制: 750ms
空间限制: 256MB