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

一种计算正整数区间上2位数(位数)之和的有效算法

颜昕
2023-03-14

假设我得到了两个整数aB,其中a是一个正整数,小于B。我必须找到一个有效的算法,它可以给出[a,b]区间内的2位数(位数)的总和。例如,在[0,4]区间中,数字之和等于9,因为0=1位,1=1位,2=2位,3=2位,4=3位。

我的程序能够通过使用循环来计算这个数字,但我正在寻找更有效的方法来处理大数字。下面是我的代码片段,只是为了给你一个概念:

int numberOfBits(int i) {
    if(i == 0) {
        return 1;
    }
    else {
        return (int) log2(i) + 1;
    }
 }
for(i = a; i <= b; i++) {
    l = l + numberOfBits(i);
}
printf("Digits: %d\n", l);

共有1个答案

司马宏茂
2023-03-14

试试这段代码,我想它给出了计算二进制文件所需的内容:

int bit(int x)
{
  if(!x) return 1;
  else
  {
    int i;
    for(i = 0; x; i++, x >>= 1);
    return i;
  }
}
 类似资料:
  • 所以,这不是关于如何计算数字中的数字。它是如何计算每一个有多少。说: 多少个0,多少个1等等,我想把它放到树形图中 那我该怎么做呢? 数组将是任意大小的,所以我想我可以循环通过它,对于每个新的int,检查每个数字,如果那么等。但不确定如何增加KV映射中的值。

  • 本文向大家介绍在C ++中计算整数中的偶数和奇数位,包括了在C ++中计算整数中的偶数和奇数位的使用技巧和注意事项,需要的朋友参考一下 给我们一个整数,任务是计算一个数字中的偶数和奇数。另外,我们将继续检查整数中的偶数是否出现偶数次,并且整数中的奇数位是否出现奇数次。 例如 说明-是的,此外,偶数出现偶数次,即2,奇数位出现奇数次,即3 说明-:否,因为偶数出现的次数是奇数,即3,而奇数出现的次数

  • 假设我们有一个非常大的阶乘,如(10^7)!,有没有一种有效的方法来计算它的精确数字?(Wolfram alpha结果表示(10^7)!有657060位) 当然,我不能通过将值一个接一个地相乘来使用朴素的实现,因为它太慢了,无法评估结果。 我认为这个问题的解决方案最终可能是 如何在不计算阶乘的情况下找到阶乘的位数 如何更有效地计算阶乘(最好是BigInteger或BigDecimal) 我更喜欢1

  • 我正在尝试在旁边使用值方法。 不幸的是,编译器说不兼容的类型。 如果我将s更改为s,它仍然不喜欢它。

  • 是否有一种方法可以编写递归函数,该函数打印数字中的位数,以便: -它是一个无效函数 -"if"条件是if(num==0),返回 -“else”将调用递归。 我看到了两种不同类型的代码,其中一种是“if”条件具有递归调用,另一种是用于“return”。但这不是我想要的。 我很不擅长递归,并试图通过自己编写代码来理解它,但没有成功。 这是我的代码(我明白为什么它打印122而不是3,但我真的不知道如何以

  • 问题内容: 我正在尝试计算由文本字段接收的输入填充的数组的总数,均值和中位数。我设法算出了总数和均值,但我只是无法获得中位数。我认为在执行此操作之前需要对数组进行排序,但是我不确定如何执行此操作。这是问题吗,还是我没有找到另一个问题?这是我的代码: 问题答案: Java中的Arrays类具有静态的排序功能,您可以使用调用该功能。