如何否定-2号基数?

Ada*_*old 6 java math

我最近接受了Codility测试,我想知道如何否定-2基数

例如,数组在基数-2中[1,0,0,1,1]表示9:

-2 bases:

1,-2,4,-8,16

1 + (-8) + 16 = 9

[1,0,0,1,1]
Run Code Online (Sandbox Code Playgroud)

基数为-2的负9 为:

-2 bases:

1,-2,4,-8

1 + (-2) + -8 = -9

[1,1,0,1]
Run Code Online (Sandbox Code Playgroud)

我对这个问题一无所知.必须有一些直观的解决方案.你有什么提示吗?

rua*_*akh 16

在基数-2中,位置i处的1 表示(-2)i.

因此,位置[ i,i + 1]中的[1,1] 表示(-2)i  +( - 2)i +1  =( - 2)i  +( - 2)( - 2)i  =(1 + -2)( - 2)i  = - ( - 2)i.

因此,您可以通过将其更改为[1,1]来否定任何[1,0]的出现,反之亦然.

当然,任何其他出现的0都可以保持不变:-0 = 0.

所以在你的例子中,我们将[1,0,0,1,1]分成[{1,0},{0},{1,1}],否定每个部分得到[{1,1},{ 0},{1,0}],即[1,1,0,1,0],并删除不必要的高0,产生[1,1,0,1].