Algorithm 将由乘积和组成的方程最大化,然后用一个数字表示模数

Algorithm 将由乘积和组成的方程最大化,然后用一个数字表示模数,algorithm,combinatorics,discrete-mathematics,modular-arithmetic,Algorithm,Combinatorics,Discrete Mathematics,Modular Arithmetic,我需要一个公式来计算变量和常数乘积的最大和,然后整个和将以某个数的模计算 x=(C1*x1+C2*x2+C3*x3..…)m,这里必须最大化x’,给出了Ci和M的值,所有席席是变量(非负整数,零包含),总之,我们必须改变Xi,这样我们就得到了最大可能的X,例如 X=(10*i+3*j)%18(这里i和j是变量,即非负整数) 答案:-X=17(取j=1,i=5) 是否存在任何公式来计算X的最大可能值 抱歉,如果你不理解这个问题(我的英语不好),如果你有任何疑问,请在评论部分询问如果有一个C与M的

我需要一个公式来计算变量和常数乘积的最大和,然后整个和将以某个数的模计算

x=(C1*x1+C2*x2+C3*x3..…)m,这里必须最大化x’,给出了Ci和M的值,所有席席是变量(非负整数,零包含),总之,我们必须改变Xi,这样我们就得到了最大可能的X,例如

X=(10*i+3*j)%18(这里i和j是变量,即非负整数)

答案:-X=17(取j=1,i=5)

是否存在任何公式来计算X的最大可能值


抱歉,如果你不理解这个问题(我的英语不好),如果你有任何疑问,请在评论部分询问

如果有一个C与M的互质,那么存在一个x,使得Cx=M-1(mod M);将所有其他x设置为0,并将与我们的特殊C对应的x设置为所需值。你不可能比M-1(MODM)做得更好

否则,如果有两个互质C,比如C1和C2,那么就有可能得到大于(C1-1)(C2-1)-1的任何和(看看硬币问题,或者弗罗贝尼乌斯数);因为必须存在一些大于M-1(mod M)全等数的数,这是你能做的最好的了;将所有其他x设置为0,并找到获得M-1所需的x1,x2

否则,首先直接将所有C与M进行比较,然后将所有C与M进行比较,找出最小最大公约数。让这个最小最大公分母称为m。然后,可以通过修改上述方法得到M-M(mod M)。然而,由于所有数字都有一个公因子,所以不可能达到M-1或任何高于M-M(mod M)的数值

要真正找到这些案例中的数字,我想先确定案例;然后,按照策略(1或2个非零项)简单地迭代各种可能性。因为我们已经把范围缩小到一到两个术语,所以这并不可怕。也许有一个更聪明的方法来实现这一点。。。如果需要比检查可能性更复杂的东西,请评论,我将重新讨论

更新

评论指出,第三种情况——没有互质系数——的处理是不正确的,也是不正确的。考虑C1=14,C2=21,m=6的情况。上述方法发现最小成对GCD为2,最大可达到6-2=4;然而,只需取x1=1和x2=1,就可以得到5(mod M)。也许真正需要做的是正确的答案是考虑所有的pairwise GCDs和应用相同的推理这些。也就是说,我们的成对GCD是2、3和7。通过解决n=2的硬币问题,这意味着通过组合每一对,我们可以得到任何一个足够大的GCD倍数的数字。这意味着,以M为模,GCD本身是可以实现的;因此,我们可以递归地将上述解决方案应用于成对GCD,直到所有成对GCD共享一个公共项(那么我最初的案例分析是正确的);或者,一个成对GCD变为1,在这种情况下,答案是M-1

请注意,在根据原始Cs重建正确答案的过程中,可能会跟踪递归和案例。作为练习离开

更新:

根据评论,我现在将尝试将这个(固定的?)方法应用到一个真实的例子中

M, C1, C2 = 385, 42, 30
GCD(M, C1) = 7
GCD(M, C2) = 5
GCD(C1, C2) = 6

  7 and 5 are coprime so we can get any number greater than (7-1)(5-1)-1
  any number greater than 23 is obtainable
  384 = 2*[7] + 74*[5]

  7 is obtainable
  7 = 46*[42]

  5 is obtainable
  5 = 13*[30]

  combining, we get
  384 = 2*[7] + 74*[5]
      = 2*46*[42] + 74*13*[30]
      = 92*[42] + 962[30]
      ~ 92*C1 + 192C2

我投票结束这个问题,因为它显然是关于数学的,而不是关于编程的。一个擅长算法的人可以回答这个问题。这就是为什么我把它贴在这里。我想你错过了一个例子:当所有Ci都不是成对互质,也不是与m互质,而是在每种情况下都有不同的GCD。例:C1=2.3.5,C2=3.7.11,M=5.11。13@fjardon这绝对是可能的;你能解释一下你的例子的正确答案是什么,并将其与我的方法得出的答案进行比较吗?我肯定会同意,当没有一对相对素数的Cs或C/M时发生的事情比其他情况下发生的事情更模糊。我不知道,我解决了与你相同的问题,但在这个问题上陷入了困境…@fjardon看起来我的答案对此的最大值为712(M=715)因为Cs和C/M对中最小的GCD是3,712=715-3=5*11*13-3。起作用的x值分别为56和2;30*56+231*2=1680+462=2142~712(mod 715)。在这种情况下,我们可以清楚地看到任何总和都是3的倍数,这肯定是3的最大倍数小于715;一般来说,如果最小的一对在C/M之间,则很难看出此方法是正确的。我可以尝试证明这些案例是足够的,也许可以令人满意。@fjardon我确实错过了一个案例,你是对的:)让C1=14,C2=21,M=6。那么任何一对中最小的GCD是2,但是你可以通过简单地选择x1=1和x2=1得到5(mod M)。更新答案以反映这一点。