0

有人可以告诉我如何实现以下伪代码行。

c[k]=c[k] (mod M) with |c[k]|<=M/2

我不明白'with'是什么意思,是否意味着我必须确保在减少模M之后,c[k]必须小于或等于M/2。在伪代码中,'with' 通常是什么意思(如果有的话)?

请注意,M 是 int 类型。如果有帮助,我将在 Java 中实现它。

提前致谢。

4

4 回答 4

4

我认为这意味着 set c[k] = c[k] + x*M, where -M/2 <= c[k] + x*M <= M/2(选择正整数或负整数x,以使这是真的)。

例如,如果 M = 5,我们将有:

       旧值 新值
          c[k] 的 c[k]
            8 -2
            9 -1
           10 0
           11 1
           12 2
           13 -2
于 2010-03-07T20:18:33.447 回答
0

这一定是伪代码吗?通常,伪代码只是描述代码将做什么,但使用更自然的语言(例如更像英语)。在这种情况下,我不确定所描述的内容。此外,我认为“与”不一定具有特殊含义,尤其是在没有看到所写其余内容的上下文的情况下。如果您提供更多信息,可能会有所帮助。

于 2010-03-07T20:18:10.780 回答
0

唔。马虎的伪代码,呵呵。但我认为他是说 c[k] 的绝对值也将小于或等于 M 的模值除以 2。但这或多或少只是一个猜测。我从来没有遇到过使用这个术语(with)的伪代码。也许他只是想让人们知道,由于模算术,c[k] 总是被保证在范围内。

于 2010-03-07T20:22:30.533 回答
-1

c[k]=c[k] (mod M) 与 |c[k]|<=M/2

if(Math.abs(c[k]) <= M/2){
  c[k] %= M;
}

“With”来自数学,意思是“如果条件为真,那么做”

你已经标记了这个“java”,所以我使用了 Java 数学库。

于 2010-03-07T20:23:32.563 回答