【发布时间】:2012-08-12 01:19:54
【问题描述】:
给定一堆整数,我想将它们转换为以 n 为基数,并且对于每个位,将这些位相加并用 n 修改它们。
示例:设 n = 3,假设我想在 4、4、4、2 中添加 mod 3 位。这些以 3 为底的数字是 11、11、11、02。最低有效位加起来为1 + 1 + 1 + 2 = 5 = 2 mod 3。第二个最低有效位加起来为 1 + 1 + 1 + 0 = 3 = 0 mod 3。答案是 02 base 3 = 2。或者,如果我们在加法之前没有转换为基数 3,只是用二进制进行,我们有 100、100、100、010。从最低有效位到最高有效位的结果位是:0 + 0 + 0 + 0 = 0 mod 3 , 0 + 0 + 0 + 1 = 1 mod 3, 1 + 1 + 1 + 0 = 0 mod 3,所以答案是 010 = 2。
n = 2 的情况非常简单,您可以对所有内容进行异或运算。有没有办法概括这一点?
【问题讨论】:
-
那么
bit是指n-ary digit? -
对不起,我不确定你的意思。你能澄清一下吗?
-
从技术上讲,如果不是以 2 为底,它们只是数字,而不是“位”(二进制数字)
-
您的问题似乎使用一个基数表示表示,一个基数表示模数。最后一个示例将基数 3 用于连接步骤,将基数 2 用于解释步骤。这恰好在这里起作用,但不适用于所有情况。是疏忽吗?答案应该是 110 = 6 吗?
标签: performance algorithm math bit-manipulation