Modulo运算符的反转是什么

时间:2018-03-18 13:24:17

标签: javascript modulo

我很难绕过如何让它发挥作用所以我来到这里寻求聪明才智的帮助。

问题是,我想颠倒以下等式的过程,以便从给定的 {获得 X {1}} Y

Z

对于用例,用户输入数字Z = [ ( X * 30 ) % Y ] ,然后按 ENTER ,系统获取当前服务器时间,然后将其乘以30.然后将给出用户服务器时间的剩余部分格式为Y(嗯,HHMMssxxx这里是毫秒..我不知道毫秒的格式字母..呵呵..),除以xxx - 即Y,其中(X*30) % Y是当前服务器时间转换为int。

我该怎样反过来?

问题是,X不应大于X - > (23:59:59.999)24小时制的最大时间值。

据说我有2359999,我怎样才能找到Z = 32, Y = 400

我知道可以有多个答案。这是我到目前为止所提出的,但我认为这在性能方面并不是最优的。

X

有没有办法更有效地做到这一点?有没有类似逆模的东西?

修改

更新了代码以检查字符串是否有效。

2 个答案:

答案 0 :(得分:2)

你不能扭转它。模数是除法运算的余数。

简化你的等式。 Z = Y%2

对于一半值,Z为0,对于其余值,Z为1。

你不能用剩余部分和除数来解决红利。

答案 1 :(得分:2)

让我们把它填入等式中:

 32 = ( X * 30 ) % 400

然后这意味着X * 30是400加32的倍数:

 32
 432
 832
 ...

现在我们可以将它除以30得到x。这可以在这样的js中完成:

 function* reverse(Z, Y) {
  for(let n = 0; ; n++)
    yield (Z + Y * n) / 30;
}

可用作:

 for(let X of reverse(32, 400))
   console.log(X);

请注意,此循环将永远运行,因为有无限的结果。 Try it