#211. 数列

本文探讨了在质数条件下前缀积的性质,并延伸到非质数情况,通过将具有相同最大公约数的前缀积归类,采用DAG算法找到最长数列。针对不同情况提出了具体的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先假设m是质数,则由于每个数都有自己的逆元,每种前缀积都可以两两互相转化(b=a*(inv[a]*b%m)%m)。

然后考虑m不为质数的情况,发现数列中相邻的两个前缀积a,b满足gcd(a.m)|gcd(b,m)。因此我们把gcd(a,m)==gcd(b,m)的数都堆成一坨,当m为质数处理,gcd(a,m)<gcd(b,m)的情况只要在原来的基础上乘以gcd(b,m)/gcd(a,m)就行了。

接下来要让数列最长,我们把每坨数都看成一个权值为数的个数的点,建一个DAG跑一跑,就直接A掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值