POJ 3358 Period of an Infinite Binary Expansion

acm06060 发表于 2007-08-26 22:12:49

题目意思是给定m,n问你 m/n的二进制数的最大循环节开始位置和长度。

其实很容易就是判定是否存在 b, l 使得: m*2^b = m*2^b*2^l (mod n) 两边消去m *2^b 
就是求 2^l=1(mod n)

懂的数论的话就知道这个是在求Dn(2) 而这个是无法直接求的,但我们有一些途径可以使得这个比较好求。
有定理1. Dn(a) = [ Dn1(a), Dn2(a).. ] iff n=n1*n2..证明这里略,这个的应用就是 如果n不是prime的话我们就把它分解成这个样子
当然如果含有2的因子这里都忽略,为什么等等说,然后我们的n就标致为 
                n=p1^t1 * p2^t2 *..*pk*tk
在根据定理1我们就转成求 Dn(2) n=p^t 
这时候我们还有定理二. Dn(a) = d iff d | phi(n)
because x^phi(n)=1(mod n) 【欧拉定理】
所以答案肯定是phi(p^t)的一个因子 对于某个p^t而言。
所以我们要做的就是找出所有 p^t(p-1)/p 的因子。
这个咋搞呢,我的实现是对于每个因子都记录下来,然后dfs到一个因子再判定是不是存在可行因子。
然后在求lcd。。好像很麻烦。。。。

不知道还有没有更好的方法。

 

关键词(Tag): acm/icpc 比赛经验


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论


  • DTracy
    2007-08-28 06:09:30 匿名 123.128.*.* http://dt-skyse.blog.sohu.com

    话说…………ICPC…………这种东西已经离我甚远了…………现在完全转向控制方向了……


  • crackerwang
    2007-08-29 15:16:25 匿名 218.249.*.*


    8错.
    给你一个点几率

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定