gpt4 book ai didi

algorithm - 计算整数中的尾随零最有效的方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:00 25 4
gpt4 key购买 nike

正常的方式是

int main(){
int a=2000,count=0,temp;
while(a!=0)
{
temp=a%10;
if(temp==0) count++
else break;
a/=10;
}
printf("%d",count);
}

有没有更高效的方法?

最佳答案

对于 32 位整数(最大值 2147483647),您最多只需要进行 4 次测试。对于 64 位,再添加一个并测试 16 个零。

从 10 的较大次方开始并向下计算:

int countTrailingZeros(int n)
{
int zeros = 0;
if((n % 100000000) == 0)
{
zeros += 8;
n /= 100000000;
}
if((n % 10000) == 0)
{
zeros += 4;
n /= 10000;
}
if((n % 100) == 0)
{
zeros += 2;
n /= 100;
}
if((n % 10) == 0)
{
zeros++;
}
return zeros;
}

这具有更好的最坏情况性能,但如果您传递的数字中有 9/10 没有尾随零,则平均情况会更糟。这仅取决于您在典型情况下传递给它的值。

但是,如果你传递给它的数字中有 9/10 没有尾随零,那么你可能不应该首先担心优化你的原始代码,因为它会在循环的第一次迭代中中断 90%时间。

关于algorithm - 计算整数中的尾随零最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233609/

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