整环上的进制转换

来源:互联网 发布:数据库课程设计怎么做 编辑:程序博客网 时间:2024/06/05 01:53

由于博主实在太菜,本文中极其容易出现错误,请各位指正,谢谢

鏼一题,顺便学习整环上的进制转换。。
设整环Z可以被以d为基数的进制表示。。且模d的一个剩余系是S,其大小是|S||S|应该是d的范数?)。
形式化地,AZ,存在唯一的一个向量g(i,giS),使得A=i=0gidi

比如当Z=Nd=10S={0,1,2,3,4,5,6,7,8,9}时,就是常见的10进制。
Z=Zd=10S={0,1,2,3,4,5,6,7,8,9}时就是-10进制辣~
e.g.-10进制下11对应的g={1,9,1,0...}

让我们想想N中的进制转换是什么样的:
每次取Amodd为末位,然后对A/d(本文中/均为整除,即a/b=aamodbb)递归进行,当A=0时结束。

一般整环上是一样的:
每次取Amodd为末位,然后对A/d递归进行,当A=0时结束。
这里mod运算和整除的具体做法由具体的Z而定。
有些时候,这两种运算不易用计算机实现,但判定是否能整除通常比较容易实现,这时有个比较暴力的方法就是枚举S中的元素a判断Aa能否被d整除。。。这个要枚举O(|S|)次,不过一般|S|比较小所以也能接受。
不过有时候S是个无限集,gg

栗子:
poj 3191 The Moronic Cowmpouter
Z=Zd=2S={0,1}
直接做即可

Gauss整数进制转换
Z={x+yi|xZ,yZ}d=1iS={0,1}
据说由于Gauss整数的性质可以转化成上一个题,但是蒟蒻只会直接做。。

Gauss整数进制转换 II
Z={x+yi|xZ,yZ}d=2+iS={0,1,2,i,1+i}
和上一题差不多。。不过很难转化成Z中的进制转换了。
有个结论是Gauss整数中x+yi的范数是x2+y2

多项式进制转换
Z=Z[x](modp)d=p0(x)S={p(x)|p(x)<p0(x)}
这里因为S是无限集所以不能枚举取模了。。好在多项式可以直接取模
具体方法参见Picks的博客。。应该在多项式乱搞技术中用得上?

1 0
原创粉丝点击