由于博主实在太菜,本文中极其容易出现错误,请各位指正,谢谢
鏼一题,顺便学习整环上的进制转换。。
设整环
Z
可以被以
形式化地,
比如当
Z=N
,
d=10
,
S={0,1,2,3,4,5,6,7,8,9}
时,就是常见的10进制。
当
Z=Z
,
d=−10
,
S={0,1,2,3,4,5,6,7,8,9}
时就是-10进制辣~
e.g.
-10进制下11对应的
g={1,9,1,0...}
让我们想想
N
中的进制转换是什么样的:
每次取
Amodd
为末位,然后对
A/d
(本文中
/
均为整除,即
一般整环上是一样的:
每次取
Amodd
为末位,然后对
A/d
递归进行,当
A=0
时结束。
这里mod运算和整除的具体做法由具体的
Z
而定。
有些时候,这两种运算不易用计算机实现,但判定是否能整除通常比较容易实现,这时有个比较暴力的方法就是枚举
不过有时候
S
是个无限集,gg
栗子:
poj 3191 The Moronic Cowmpouter
直接做即可
Gauss整数进制转换
Z={x+yi|x∈Z,y∈Z}
,
d=−1−i
,
S={0,1}
据说由于Gauss整数的性质可以转化成上一个题,但是蒟蒻只会直接做。。
Gauss整数进制转换 II
Z={x+yi|x∈Z,y∈Z}
,
d=2+i
,
S={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
<script type="math/tex" id="MathJax-Element-358">S</script>是无限集所以不能枚举取模了。。好在多项式可以直接取模
具体方法参见Picks的博客。。应该在多项式乱搞技术中用得上?