当前位置: 首页 > 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.zskr.cn/news/1481377.html

相关文章:

  • 安防企业技术路线选择:DSP自研与SoC集成的博弈与决策
  • DINOv2视觉注意力机制:让AI像人类一样“看懂“图像的终极指南
  • 为什么CSMA/CA“阴魂不散”?
  • 网盘直链下载助手终极指南:一键获取八大网盘真实下载地址,告别限速烦恼
  • USBCopyer终极指南:揭秘U盘自动备份神器的智能同步魔法
  • 2026 年,来日照吃海鲜,我认准渔来香的「可信风味」 - GrowthUME
  • Docker 容器化技术与镜像安全管理:构建安全可信的容器交付链路
  • 市面上有哪些是真正无痕改写的降AIGC软件(顺利通过高校AIGC审核) - 降AI小能手
  • Matlab版Vicsek模型仿真工具:实时看一群小点怎么慢慢朝同一个方向跑
  • 压缩机常见故障快速排查与处理方法全解析 - 生活服务
  • Fillinger:如何用智能填充插件将Illustrator图案设计效率提升20倍?
  • OBS背景移除插件终极指南:三步打造专业级直播画面
  • 以光筑影,匠造经典——摄影大师路鹏主讲商业灯光公开课圆满落幕
  • Excel超链接批量处理:工程师必备的公式法与自动化技巧
  • 智能驾驶安全新核心:一文读懂SOTIF(预期功能安全)
  • 从富士康顶嘴事件看制造业管理:代际沟通、规则执行与组织韧性
  • 全面解析OpenCamera:完全免费的专业级Android相机应用神器
  • Python学习第69天: NumPy的应用-2
  • 赛道收官,热爱不止!后谷咖香陪伴跑者健康续航 - 品牌速递
  • 循环索引变量请避免使用全局变量
  • UC3842电压反馈电路设计:从经典光耦到增益调节的优化方案
  • 大疆无人机固件下载终极指南:如何重新掌控你的飞行设备
  • [智能体-308]:机器的九级智能阶梯与对应的核心技术(已有的、发展趋势、未来可能的新技术)
  • 从‘按钮,按钮’到‘电车难题’:用Python模拟经典道德困境,可视化你的选择结果
  • 如何利用UKB_RAP平台高效分析英国生物银行的海量生物医学数据:完整指南
  • 从零制作FM发射器:电路原理、调试技巧与实战指南
  • 平板电脑硬件设计揭秘:从ARM/x86平台选型到电源散热系统实战
  • 低成本DIY舵机测试仪:基于USBASP的硬件改造与固件开发全攻略
  • MetaERP结合前文架构对比,从设计、业务、技术、运维、合规、扩展六大维度,梳理 MetaERP 核算架构的核心优势,并对标 Oracle EBS 体现差异,同时落地到实际业务场景。
  • B站缓存转换神器:3分钟极速将m4s视频转为MP4