DZY Loves Math II

简要题面

对于正整数 S,n,求满足如下条件的素数数列 (p1,p2,,pk)k 为任意正整数) 的个数:

  • p1p2pk
  • p1+p2++pk=n
  • lcm(p1,p2,,pk)=S

现在有一个固定 S 和多组询问 n,求答案对 109+7 取模后的结果

题解

显然第三条就是 p1p2pk 去重后乘积 =S

所以 S 如果有平方因子,那么所有询问都输出 -1 .

我们考虑把相同的 pi 合并,则条件变成

pici=n(ci1)pi=S

ci1 只需要用 n 减即可变成 ci0 .

我们发现 n 挺大,S 挺小, pi 又还是 S 的约数,于是考虑把 ciSpi 取模

如果一个 ci 到达了 Spi,那么就有 里面那玩意 =S

于是乎令 ci=aiS+bibi<S)则可以拆成俩半

  • aiS:我们称为整块
  • bi:我们称为散块

整块有个 S,可以提出来然后隔板法

散块分两类贡献

  1. 散块自身:因为散块非常小,跑多重背包即可
  2. 散块和散块合成整块:这个是要斥掉的,考虑对于 dpm,那么减去有整块的情况 dpmS,完美解决 .

没了 .

reference: https://www.cnblogs.com/hzoi-DeepinC/p/11131047.html

posted @   yspm  阅读(106)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示