当前位置: 首页 > 知识库问答 >
问题:

求出所有小于给定no的数,其集合位数小于给定no但在相同位置上的no

易琨
2023-03-14

如何找到所有的数字,这些数字小于给定的no,并且这些数字的设置比特数小于给定的no,但无论什么no。举一个例子,假设给定的no是13(二进制中的1101),那么所有生成的no将是12(二进制中的1100),9(二进制中的1001),8(二进制中的1000),5(二进制中的0101),4(二进制中的0100),1(二进制中的0001)。可见,在1100中(设置位位置为2和3,如在给定的1101号中)。我想要一个高效的算法

共有1个答案

司徒运锋
2023-03-14
std::vector<int> subset(int x) {
    std::vector<int> res;
    for(int i = 1; i < x; ++i)
        if (i == (i&x))
            res.push_back(i);
    return res
}

在最坏的情况下(如果x=2^k-1)它的复杂性是最佳的。

 类似资料:
  • 给定一个由n个整数组成的数组nums和一个目标,求出满足nums[i]+nums[j]+nums[k] 例如,给定nums=[-2,0,1,3],target=2。 返回2。因为有两个和小于2的三胞胎:

  • 我的问题很简单,但我不知道如何解决我想要的。我必须找到小于给定数字的最大数素数,如果不存在则打印消息。 代码是有效的,如果数字是10,它会打印7,但我想做2个新的修改,我找不到解决方案。例如,如果给定的数字是1,我的程序应该如何修改以打印消息?我试着写一个if-else,但是如果我用if修改了while,这将不会有帮助。第二件事,如果给定的数是素数,代码仍然会找到比给定数少的数。如果我给数字7,输

  • 我有一个大小为的整数值数组和一个给定的。 我想找到子序列的总数,使得每个子序列的元素总和小于。例如:设 ,,数组的元素为 ,则其总子序列为 作为- 但是,所需的子序列是: 也就是说,不被取,因为它的元素和是,这大于,即

  • 我需要显示所有偶数,因为它小于一个特定的数字。这些数字是在一个范围之间随机生成的。以下是作业: 编写提示用户输入整数(n)的程序。然后,程序生成另一个随机整数(max),最多达到10*n。因此,如果输入的n是5,那么生成的数字(max)应该在5到50(5*10)之间。这个程序显示小于(max)的所有偶数的和。您的程序在第一个和值大于max时停止。显示其价值。

  • 打印出小于给定数N的素数。对于奖励积分,您的解决方案应该在时间或更好的时间内运行。你可以假设N总是一个正整数。 输入样本: 程序应该接受文件名的路径作为其第一个参数。该文件中的每一行都是一个测试用例。每个测试用例将包含一个整数