gpt4 book ai didi

java - 数学 "non loop"方程

转载 作者:行者123 更新时间:2023-12-02 05:16:18 25 4
gpt4 key购买 nike

我正在创建一个Java程序,但正在处理数学问题,但似乎无法解决它。这是我的作业:

I have infinite numbers of numbered papers(1,2,3, ..). 
This papers are stacked into stacks using 2 variables a and b.

If a = 5 and b = 3 the stacks look like:

enter image description here

So the first stack has "a" items (5) and each next has "b" more (3) as previous.

现在我必须找出一个方程来告诉我需要删除多少张论文才能得到特定的论文

例如,如果我想找到编号为 20 的论文,我需要删除 4 张论文才能找到它。这就是我正在寻找的解决方案,当我输入特定论文的编号时,我只需要知道需要移动多少个(在它所在的堆栈中)才能到达它。当我有了这个我把所有的文件放回去并寻找下一篇。

由于我将用它编写一个程序,该程序将处理长数字(最多 16 位数字),因此最好的解决方案是找到一些“非循环”方程。例如,如果我设置 a = 34354 和 b = 56774,并且我想知道要删除多少张纸才能得到编号为 533663634611112 的纸。

我的输入将是:
- 数字 a 和 b
- 我想要达到的论文数量 (c)
- 关于上面的变量(c),我将输入代表编号论文的这么多数字

输出:
- 我必须移动的论文数量才能到达我已插入的所有论文

所有数字都会很长,所以最好制作一个非循环程序。感谢您对这个问题的所有帮助。

最佳答案

为此您不需要任何循环。第 n 堆论文的数量为 a + (n-1)b。因此,前 n 堆论文的数量为(算术级数)(b/2)n^2 + (a - b/2)n

使用这个,找到获得你的论文所需的堆数。在您的示例中,将其设置为 20(并使用 3 和 5)。所以你有20 = 1.5n^2 + 3.5nSolving this (使用二次公式)给出 n = -5n = 8/3。忽略负面的,因为在这种情况下它没有意义。

如果您需要 8/3 堆才能找到您的论文,则它必须在第三堆中(向上舍入到最近的整数(上限函数))。使用上面的公式和 n = 3 可以发现前三堆中有 24 篇论文 (1.5 * 3^2 + 3.5 * 3 = 13.5 + 10.5 = 24) .

24 - 20 = 4 = 您需要删除的纸张数量。

mockup solution, you need to remove hardcoding and make sure nothing overflows for the large numbers

关于java - 数学 "non loop"方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26925669/

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