在 C++ 中分解数字

decomposition of a number in c++

本文关键字:数字 分解 C++      更新时间:2023-10-16

我没有代码,我只是问如何开始。好吧,用户输入数字(例如,数字将是 437(。分解单位是(50,10,1(,就像在银行系统中一样。让我们回到示例 437 ,输出将是 50*8(因为结果是 400(,然后是 10*3(...30( 最后数字 7 将是 1*7。如何开始?如果数字 437 会有 1101 怎么办?如何告诉代码停止?

想象一下,你是一名银行出纳员,有人正在提取非常具体数量的现金。他们要求111111美元。你的大脑在做什么才能告诉你停止给他们现金?你会给这个人无限的钱吗?你不给他钱吗?从字面上看,问问自己如何将这些人的钱分解成较小的钞票。然后向一个不懂数学的孩子解释怎么做。

然后告诉计算机通过代码执行此操作。计算机比孩子更好,因为他们在解决问题时没有逻辑直觉,但他们完全遵循指令,他们的数学做得很好。所以,假装计算机(你的程序(是一个孩子,他会完全按照你说的去做,并告诉它如何给客户他们要求的现金。

如果你不知道作为银行出纳员将如何解决这个问题,那就停止编码,先去学习数学。解决像这样的简单编程问题至少需要这种水平的数学能力。

我现在无法为您提供C++代码,但从逻辑上讲,我会提出以下建议:

您有一组除数,在您的示例中为 50、10 和 1。您只需按顺序将股息与每个除以 - 每个的答案将是整数部分(不四舍五入(。如果有余数,则余数除以下一个。

所以,在有点伪代码中:

(除数为 50、10、1 - 除数为 437(:

获取 50 的数量

num50s = 437/50;

余数 = 437 - (437/50(;

获取 10 的数量

num10s = 余数/10;

余数 = 余数 - (余数/10(;

等。。。

数字50s,num10s...是你要找的。

现在,这可以写得更好,更有效,但希望它能给你这个想法。

顺便说一句 - 像 1101 这样的数字是相同的。如果将 100 作为细分的一部分,则上述示例有效,但不是从除以 50 开始并得到余数,而是从除以 100 开始。希望这有帮助。