Math 合并两个数学表并找到第k个元素

Math 合并两个数学表并找到第k个元素,math,Math,将两个数字的倍数合并,并从开始处查找第k个元素。例如 multiples of 3 are 3,6,9,12... multiples of 5 are 5,10,15,20... 最后,在合并这两个数字数组之后,我们得到一个数组 3,5,6,9,10,12,15,15,18,20 因此: the 5th element is 10 the 9th element is 18 注:如果一个数字出现两次(在上述情况下为15),则将其视为2个不同的事件。 设a为第一个数,b为第二个数,k为在a和

将两个数字的倍数合并,并从开始处查找第k个元素。例如

multiples of 3 are 3,6,9,12...
multiples of 5 are 5,10,15,20...
最后,在合并这两个数字数组之后,我们得到一个数组
3,5,6,9,10,12,15,15,18,20
因此:

the 5th element is 10
the 9th element is 18
注:如果一个数字出现两次(在上述情况下为15),则将其视为2个不同的事件。 设a为第一个数,b为第二个数,k为在a和b的倍数的合并中需要找到的元素。然后导出一个推广公式 用于查找第k个元素。 例子: a=3 b=5 k=5 答复:10 a=3 b=5 k=9 答案:18

如果你在a的序列中采取b步,在b的序列中采取a步,那么你将到达公共元素a⋅B对于k=a+b,答案是m=ab。对于k=2(a+b),你得到m=2⋅答案是ab。因此,第一近似值为m=k⋅ab/(a+b)。但如果k不是a+b的倍数,这通常是不正确的

因此,采取

m0 = (k * a * b) / (a + b)
作为第一近似值。将其四舍五入为一个resp的倍数。B由于
m0
的值看起来太小,让我们先将它们四舍五入到
mA
中,这是a的倍数,然后四舍五入到
mB
中,这是b的倍数

还不够好。在某些情况下,正确的值m甚至不是
mA
mB
中的一个。例如,对于k=10,两个值都太大。那么,把四舍五入改为四舍五入怎么样

k   1     2     3     4     5     6     7     8     9    10    11    12
m   3     5     6     9    10    12    15    15    18    20    21    24
m0  1.88  3.75  5.62  7.50  9.38 11.25 13.12 15.00 16.88 18.75 20.62 22.50 
ma  0     3     3     6     9     9    12    15    15    18    18    21
mb  0     0     5     5     5    10    10    15    15    15    20    20
m1  0     3     5     6     9    10    12    15    15    18    20    21
乍一看,这并没有好多少。但是如果你看最后一行,
m1=max(ma,mb)
,你可能会注意到它就像m刚刚移动了一个。这就引出了最终的解决方案:

m = max(floor((k + 1) * b / (a + b)) * a,
        floor((k + 1) * a / (a + b)) * b)
我用许多不同的输入尝试了这种方法,到目前为止它似乎是有效的。这不是数学证明,但今天对我来说已经足够了

m = max(floor((k + 1) * b / (a + b)) * a,
        floor((k + 1) * a / (a + b)) * b)