(续34楼,并复
@论三国计 兄)
【因故耽搁了较长时间,请原谅】
前面32楼
@itfrombit 兄和35楼
@liyanan778 兄所说的算法是对的。
下面继续34楼的叙述,详细说一下我的想法。
声明一下:我的这些想法是去年或前年受到了《智商》吧中发言(可惜没记下发言者的ID)的提示以后,才逐渐想出来的,所以关于下面的叙述,希望能收到本吧吧友中高手的指教。
【一】先介绍几个术语、符号(采用这几个术语及符号仅仅是为了下文叙述方便,不保证和别人的用语一致,因为尚不了解别人的资料)及预备知识:
◆“P进制的免进位加法”(用符号㈩表示)
一个数写成P进制的形式后,按常规的笔算加法,应该是对应位相加,满P就向上一位进1。而这种“免进位加”和普通的加法不同处就是把进位丢掉,不给上一位加1。
以P=3(即三进制)为例。例如:
十进制的17和5,如果写成三进制,就是122(表示9+3*2+2)和12(表示3+2)
3进制普通加法,它们相加结果是三进制211
而3进制免进位加法,它们相㈩结果是三进制101。
不难证明,这种㈩运算和普通加法一样,满足交换律、结合律,且㈩0等于不㈩。
◆“P进制的免借位减法”(用符号㈠表示)
“P进制的免进位加法”㈩的逆运算,称作“P进制的免借位减法”㈠。和普通的减法不同处就是需要借位时“免费”借,不从上一位减1。
不难证明:
相等的数相㈠为零,即x ㈠ x = 0;
不同的数相㈠非零,即如果x≠y,则必然x ㈠ y ≠ 0。
如果P=2,那么“二进制的免进位加法”和“二进制的免借位减法”都等同于Windows所带的计算器上的XOR运算。
(待续)