gpt4 book ai didi

c# - 面试题

转载 作者:太空宇宙 更新时间:2023-11-04 11:42:11 25 4
gpt4 key购买 nike

计算机科学的基础之一是了解数字如何用 2 的补码表示。想象一下,您使用 32 位以 2 的补码表示形式写下 A 和 B 之间的所有数字。你一共会写下多少个 1?

输入:第一行包含测试用例的数量 T (<=1000)。接下来的 T 行中的每一行包含两个整数 A 和 B。

输出:输出 T 行,每个测试用例对应一行。

约束:-2^31 <= A <= B <= 2^31 - 1

示例输入:

-2 0
-3 4
-1 4

示例输出:

63
99
37

解释:对于第一种情况,-2 包含 31 个 1,后跟一个 0,-1 包含 32 个 1,0 包含 0 个 1。因此总数为63。对于第二种情况,答案是 31 + 31 + 32 + 0 + 1 + 1 + 2 + 1 = 99

最佳答案

for (int i=1; i<line[0]; i++)
{
int numOf1s = 0;
for (int j=line[i].A; j<=line[i].B; j++)
{
for (unsigned int n=j; n>0; n>>=1)
numOf1s += n & 1;
}
printf("%d\n",numOf1s);
}

关于c# - 面试题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20946558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com