Java “数学”;“非循环”;方程式

Java “数学”;“非循环”;方程式,java,math,equation,numbered,Java,Math,Equation,Numbered,我正在创建一个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: 现在我必须找出一个等式,告诉我需要删除多少篇论文才能得到具体的一篇 例如,如果我想找到编

我正在创建一个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:

现在我必须找出一个等式,告诉我需要删除多少篇论文才能得到具体的一篇

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

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

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

输出
-我必须移动的论文数,以访问我插入的所有论文

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

您需要某种循环来完成此操作。我可以在数学方面提供帮助,但可能需要其他人来帮助编程

j=1
TOTAL = ja + (j-1)b
If the TOTAL is less than c, then let j=j+1 and loop
If the TOTAL is greater than c, end the loop (this loop shouldn't take too long)
Then calc TOTAL - c from it to get your answer

这种方法应该有效。但是这样的假设循环即使是长数字也不应该有太大的威力。

数学答案,但它可能足以帮助您:

堆栈数是两个不等式的单整数解:

ax + b(x-1)> argument AND a(x-1) + b(x-2) < argument

这不需要任何循环。
n
th堆中的论文数量为
a+(n-1)b
。因此,第一堆
n
中的论文数量是(算术系列)
(b/2)n^2+(a-b/2)n

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

如果你需要8/3堆纸才能拿到你的论文,它必须在第三堆(四舍五入到最接近的整数(天花板函数))。将上述公式与
n=3
一起使用,发现前三堆中有24篇论文(
1.5*3^2+3.5*3=13.5+10.5=24

24-20=4=需要移除的纸张数量


它与编程有关吗?为什么有很多s-h-i-t-s?添加编程语言标签,并在问题中包含您的代码。现在这个问题还不够清楚。事实上,我只是在寻找代码的一部分,它将返回到达特定论文需要移动的论文数量。我想自己制作所有其他东西,而不是整个程序。所以a是初始堆栈大小,b是堆栈大小的增量。你确定不用循环就能解决这个问题吗?除非您以某种方式编写递归公式来确定索引,否则请使用线性递归公式使其成为闭合公式。我刚才正试图找出一个递归公式,但我有点卡住了,我正在工作,所以我的时间有限,对不起。是的,这就是我正在尝试的,实际上我需要索引纸张所在堆栈的顶部纸张编号。因为我将要搜索的论文数量最多可以是5位数字,而论文数量最多可以是16位数字,所以我认为这个循环需要很长时间。对所有被搜索的文件都使用它是的,但是没有嵌套的文件来搜索,每个文件都有许多要移动的文件。谢谢,但不太清楚你的意思。是的,为了搜索c论文,我将有一个从1到c的循环。但在这个循环中,如何管理插入的论文数量,并得到移动多少的答案。你能解释一下我给a=5,b=3的例子中的公式吗?我们正在寻找编号为20的纸张。
ax + b(x-1)> argument AND a(x-1) + b(x-2) < argument
a*x + b(x-1) - argument