当前位置: 首页 > news >正文

*题解:[ABC461F] Total Product is N

题目链接

解析

首先 \(A\) 中的数必定是 \(N\) 的约数,通过暴搜可以求出一个小于等于 \(10^{10}\) 的数最多只会有 \(2304\) 个约数。

由于题目要求 \(A\) 中的数互不相同,而 \(13!<10^{10}<14!\),所以 \(A\) 中至多有 \(13\) 个数。

于是可以考虑 DP。设 \(f_{i,j,k}\) 表示考虑了前 \(i\) 个约数,选了 \(j\) 个数,乘积为第 \(k\) 个约数的方案数;类似地,设 \(g_{i,j,k}\) 表示这些方案的 \(A\) 中元素和。如果设 \(d_i\) 表示 \(N\) 的第 \(i\) 个约数,那么:

\(d_i \mid d_k\),则有选/不选第 \(i\) 个约数,这两种情况,若选,则有 \(j\) 个位置可以插入:

\[f_{i,j,k} = f_{i - 1,j,k} + f_{i - 1,j - 1,get_{i,k}} \cdot j \\ g_{i,j,k} = g_{i - 1,j,k} + g_{i - 1,j - 1,get_{i,k}} \cdot j+ f_{i - 1,j - 1,get_{i,k}} \cdot d_i \cdot j \]

其中 \(get_{i,k}\) 表示 \(\frac{d_k}{d_i}\) 等于第几个约数。

否则,无法选取 \(d_i\)

\[f_{i,j,k} = f_{i - 1,j,k} \\ g_{i,j,k} = g_{i - 1,j,k} \]

若令 \(d(N)\) 表示 \(N\) 的约数个数,则时间复杂度为 \(O(d(N) ^ 2)\)

代码

/*
*/
#include <bits/stdc++.h>
#define eps 0.0000000001
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = 3000 + 5,M = 14,P = 2000000,mod = 998244353;
int f[N][M][N],g[N][M][N];
int gt[N][N];
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);memset(gt,-1,sizeof(gt));ll n;cin>>n;vector<ll> d;d.push_back(-1);for(int i=1;1ll * i * i<=n;i++){if(n % i == 0){d.push_back(i);if(1ll * i * i != n){d.push_back(n / i);}}}sort(d.begin(),d.end());for(int i=1;i<d.size();i++){for(int j=i;j<d.size();j++){if(d[j] % d[i] == 0){gt[i][j] = lower_bound(d.begin(),d.end(),d[j] / d[i]) - d.begin();}}}f[0][0][1] = 1;for(int i=1;i<d.size();i++){for(int j=0;j<M;j++){for(int k=1;k<d.size();k++){f[i][j][k] = f[i - 1][j][k];g[i][j][k] = g[i - 1][j][k];if(d[k] % d[i] == 0 && j){f[i][j][k] = (1ll * f[i - 1][j - 1][gt[i][k]] * j % mod + f[i][j][k]) % mod;g[i][j][k] = ((1ll * f[i - 1][j - 1][gt[i][k]] * j % mod * (d[i] % mod) % mod + 1ll * g[i - 1][j - 1][gt[i][k]] * j % mod) % mod + g[i][j][k]) % mod;}			}}}int res = 0;for(int i=0;i<M;i++){res = (res + g[d.size() - 1][i][d.size() - 1]) % mod;}cout<<res;return 0;
}
http://www.jsqmd.com/news/969655/

相关文章:

  • 深度解析:如何通过LCU API构建高效英雄联盟自动化工具
  • 为什么CSMA/CA“阴魂不散”?
  • 从流量衰减到爆款复刻:用CSDN AI数字营销数据逆向推演选题ROI的3步归因法
  • 跨平台笔记迁移实战指南:一站式自动化解决方案
  • DINOv2视觉注意力机制:让AI像人类一样“看懂“图像的终极指南
  • MSP430F5418 UCS时钟系统配置实战:从架构解析到多时钟源调试
  • 网盘直链下载助手终极指南:一键获取八大网盘真实下载地址,告别限速烦恼
  • ComfyUI ControlNet辅助预处理器终极指南:解锁AI绘画精准控制
  • 安防企业技术路线选择:DSP自研与SoC集成的博弈与决策
  • 【Linux】网络基础(1)--之局域网、广域网、OSI,网络协议、TCP/IP结构模型、网络传输等知识详解
  • WHY-GEO优化全栈运营系统 | 2026年AI搜索优化(GEO)平台选型指南:技术、资源与服务全维度评估 - GrowthUME
  • 3步解锁你的加密音乐:浏览器本地解密完全指南
  • Profibus主站选型指南:PLC、PC与专用板卡方案深度解析
  • 套餐过期≠内容消失,但你的转化率已断崖下跌!CSDN AI营销卡片失效的5个隐蔽信号,第3个90%博主忽略
  • Jsxer解密:5步破解Adobe ExtendScript二进制加密,让JSXBIN文件重见天日
  • USBCopyer终极指南:揭秘U盘自动备份神器的智能同步魔法
  • 2026 年,来日照吃海鲜,我认准渔来香的「可信风味」 - GrowthUME
  • AMD Ryzen处理器终极调优指南:使用RyzenAdj释放完整性能
  • 2026上海黄金回收哪里价更高?对比5家店后,这份榜单告诉你答案 - 商业快讯早知道
  • 工程师视角下的制造业生态:从价值创造到系统思维
  • Docker 容器化技术与镜像安全管理:构建安全可信的容器交付链路
  • 亲密的网络旅程(三):物理世界的“信封信纸”——以太网帧的深度解剖与CRC数学的浪漫
  • SAP SD新手避坑:VF051科目确定报错,别急着改VKOA!先检查这4个地方(附BP主数据排查)
  • 2026想在上海市黄金回收多卖几百块?这5家口碑好店,报价确实更实在 - 商业快讯早知道
  • 市面上有哪些是真正无痕改写的降AIGC软件(顺利通过高校AIGC审核) - 降AI小能手
  • FSDB波形文件生成与管理实战:从系统任务到自动化脚本
  • Montserrat字体:免费开源字体解决方案的终极指南
  • Matlab版Vicsek模型仿真工具:实时看一群小点怎么慢慢朝同一个方向跑
  • 智能驾驶的“安全气囊”:失效保护技术全景解读与实战指南
  • OBS背景移除插件终极指南:三步打造专业级直播画面