gpt4 book ai didi

c - 如何在没有数组的情况下旋转数字的 n 位?

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:01 26 4
gpt4 key购买 nike

问题:用户输入两个数字:一个大的和一个小的。小数是从最后一位开始转移到前面的位数,其余数字紧随其后。例如:大数为456789,小数为3,则结果为:789456。我的想法如下:

if(...) {
newNum = BigNumber%(10*SmallNumber);
printf("%d", remainder");
SmallNumber--;
}

但它并没有按照我希望的顺序逐位打印,我不明白为什么。如果允许使用数组,那没问题。此外,我不允许使用 string.length,这也使它变得容易得多。

最佳答案

旋转数字可以作为剪切、移位和加法的组合来执行。例如,如果你有一个数字 123456789,你需要将它旋转 3,你可以按如下方式进行:

  • 截掉后三位123456789
  • 将剩余的数字移动三位数得到 123456789
  • 将最后三位数字移动六位,得到 789000000
  • 将两个数字相加 789000000 + 123456 得到结果 789123456

下面是如何对十进制数进行这些运算:

  • 通过对 % 10k
  • 求模来截断最后的 k
  • 右移 k 位相当于整数除以 10k
  • 左移 k 位相当于乘以 10k
  • 可以通过重复整数除以 10 来计算出一个数的有效位数。
  • 按常规方式添加。

关于c - 如何在没有数组的情况下旋转数字的 n 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40750600/

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