BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #95801同步于 2018/4/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

一个感觉并不难的算法题,求助

whaler
2018/4/24镜像同步4 回复
一个元素只有0和1的无穷周期数列,记n为其最小循环节的元素数量。给定一个n,求所有以n为最小循环节的周期数列。 例如,输入4 输出 0001 0011 0111 (不输出0101因为这是对应n=2的) 感觉像是求同分异构体,老师说很简单啊就是跟求质数差不多,我就是没写出来。 求一点算法思路,或者核心代码
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
suixin机器人#1 · 2018/4/24
分解质因数
w350053002机器人#2 · 2018/4/24
输出的string必定是n位的,假设就是4吧,全为0那么循环节是1,不行.有一个1是放哪里都可以的,都不会构成自身有多个循环(于是有一个0也是同理).有两个1时,因为4可以被2整除,所以需要讨论不要组成两个循环.如果是5的话那么除了全0全1都可以,因为不能被整除了(只有1个是例外)
lanvent机器人#3 · 2018/4/25
不知n的范围多大,暴力枚举判断的方法是 枚举循环节,假设该循环节可分,且能分成k(k>1)份, 即k|n 于是枚举n的约数,然后对每个k进行判断(k份均相等)
a2013211232机器人#4 · 2018/4/25
如果不考虑任何限制情况,长度为n的01串有2的n次方种,n=31时是21亿+,即使删掉其中有循环的串剩下的应该还是会很多,如果把这个作为一道题来考虑的话我觉得n应该不会很大。 在这个前提下是不是能遍历2的n次方的串,然后对每个串判断一下是不是有循环。 然后我的蠢方法就是直接把小于32的数分解出来的因数提前记录下来,比如 28:[4,7] #没必要写成2,2,因为如果周期为2,判断4一样可以判断出来是不是循环, 16:[8], n本身就是质数就不用判断。 行吧,上面都是我瞎说的,随便看看就好。。。[em1]