洛谷题单指南-进阶数论-P3861 拆分

news/2025/9/26 16:28:18/文章来源:https://www.cnblogs.com/hackerchef/p/19111407

原题链接:https://www.luogu.com.cn/problem/P3861

题意解读:将整数n拆分成不同因数之积的方案数,不含1*n的情况。

解题思路:

1、背景知识-超级合数

n的数据范围最大是10^12,尽管n很大,但是n以内的整数的约数个数最多是多少呢?

在数论中通常可以查询超级合数表来计算:超级合数介绍

查表可以,不超过10^12的超级合数是:

963761198400 2*2*2*2*2*2*3*3*3*3*5*5*7*11*13*17*19*23 6720

6720就是963761198400的约数个数,这个就是最多的约数个数。

有此基础,问题就好办了!

2、问题分析

对于一个整数n,先分解出所有的约数(包括1和n),存入数组a[],一共是cnt个,并对约数从小到大排序;

再定义一个数组pos[],用来存每个约数对应a中的下标,需要注意约数中在1~sqrt(n)内的不超空间,sqrt(t)~n范围内可能超空间,可以分开两个数组,对sqrt(t)~n范围的数进行hash处理,这里直接统一用map处理。

接下来用线性动态规划来解决,

状态定义:设f[i][j]表示将a[i]拆解成a[1]~a[j]之积的方案数,根据约数个数最大6720,数组开f[10000][10000]即可

状态转移:

对于f[i][j],主要看最后一个a[j]是否包含在a[i]拆解的约数之中

如果不包含a[j],必然不选a[j],则有f[i][j] = f[i][j - 1]

如果包含a[j],可以选也可以不选a[j],则有f[i][j] = f[i][j - 1] + f[pos[a[i] / a[j]]][j - 1]

初始化:f[1][1] = 1

结果:f[cnt][cnt] - 1,减一是因为排除1 * n的情况

100分代码:

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N = 10000, M = 1000000;
LL a[M], cnt;
unordered_map<LL, int> pos;
int f[N][N];
int t;int main()
{cin >> t;while(t--){cnt = 0;memset(f, 0, sizeof(f));LL n;cin >> n;for(int i = 1; i <= n / i; i++){if(n % i == 0){a[++cnt] = i;if(i != n / i) a[++cnt] = n / i;}}sort(a, a + cnt + 1);for(int i = 1; i <= cnt; i++) pos[a[i]] = i;f[1][1] = 1;for(int i = 1; i <= cnt; i++){for(int j = 2; j <= cnt; j++){f[i][j] = f[i][j - 1];if(a[i] % a[j] == 0) f[i][j] += f[pos[a[i] / a[j]]][j - 1];}}cout << f[cnt][cnt] - 1 << endl;}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查网站域名备案wordpress主导航菜单

AItoolchain主要模块包括&#xff1a; 模型转换&#xff1a;将深度学习模型转换为特定硬件平台可以识别和执行的格式。嵌入式运行环境&#xff1a;提供异构模型的运行库支持&#xff0c;确保模型在目标设备上的运行效率。性能验证&#xff1a;包括静态和动态性能评估&#xff…

线程的状态流转

线程的状态流转从JAVA源码可以得出有6种状态 NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED通过代码解释说明初始化状态是NEWpublic static void main(String[] args) throws InterruptedException { Th…

从方向向量获取y轴旋转值

常用方案三进行模型控制 方案 1:直接用 lookAt 如果你的方向向量是从 A → B,那么可以用 lookAt: const dir = p2.clone().sub(p1).normalize(); // 世界方向向量 const target = p1.clone().add(dir); // …

verilog一些操作符和特殊函数

还是写下来,用的少记不住 1.verilog +: reg [31:0] dword; reg [7:0] byte0; reg [7:0] byte1; reg [7:0] byte2; reg [7:0] byte3; assign byte0 = dword[0 +: 8]; // Same as dword[7:0] assign byte1 = dword[…

AI工作流详解以及应用场景(AI)

AI工作流通过节点化组件编排实现任务自动化,平衡确定性与适应性演进,形成三层技术架构(能力层、节点层、编排层)。主流平台如n8n、Dify、Coze各具优势,适用于不同场景。典型应用包括跨境电商自动化、法律合同审查…

毕业网站建设ppt邢台市住房和城乡建设局官方网站

要通过1688的API获取店铺所有商品数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取整店商品数据&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;…

做淘宝券推广的网站有哪些网页专题设计

CGLib动态代理原理 CGLib动态代理是代理类去继承目标类&#xff0c;然后重写其中目标类的方法啊&#xff0c;这样也可以保证代理类拥有目标类的同名方法&#xff1b; 看一下CGLib的基本结构&#xff0c;下图所示&#xff0c;代理类去继承目标类&#xff0c;每次调用代理类的方…

20250820_浙江省职业职工技能竞赛_crypto

RSA, 低位, 高位, 限定数字Tags:RSA,低位,高位,限定数字 0x00. 题目 task.py from Crypto.Util.number import isPrime, bytes_to_long import random from secrt import flagdic = 748 def prime():while True:k=for …

非结构网格中计算场梯度的手段比较

非结构网格中计算场梯度的手段比较pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

第一章pytorch安装

一.创建anaconda虚拟环境(以后如果没有特殊要求可以用当前已经创建好的环境) 在Anaconda Prompt里创建环境现在是创建一个名为pytorchnow的虚拟环境,用python3.9为了匹配要安装的pytorch conda create -n pytorchno…

钡铼技术:2025工业智能体元年,盘点已推出的工业AI大模型总有一款适合您

2025 年被称作“智能体元年”。在上海工博会上,西门子展示了他们的 Industrial Copilot —— 一个能够辅助工程师编写 PLC 程序、理解工艺文档、甚至优化设备调试的大模型应用。 这不仅仅是一次产品展示,更释放了一个…

深入解析:i.MX6ULL移植内核6.6(一)修改网络驱动和LCD驱动

深入解析:i.MX6ULL移植内核6.6(一)修改网络驱动和LCD驱动pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

微算法科技(NASDAQ MLGO)使用基于深度学习的物理信息神经网络(PINN),增强区块链IoT网络交易中的入侵检测

在万物互联时代,物联网设备数量呈指数级增长,区块链技术凭借其去中心化、不可篡改特性成为保障IoT交易安全的关键基础设施。然而传统入侵检测系统面临动态网络拓扑、异构设备协议及加密流量分析等多重挑战,难以有效…

前端模块化——彻底搞懂AMD、CMD、ESM和CommonJS

目录CommonJS AMD和require.js CMD和sea.js ES6 ModuleES6 模块与 CommonJS 模块的差异总结 我们知道,在NodeJS之前,由于没有过于复杂的开发场景,前端是不存在模块化的,后端才有模块化。NodeJS诞生之后,它使用Co…

【MySQL】XML中基于已有查询代码,进一步做汇总统计

任务有点急,什么规范、性能,暂时别考虑了。 xml中已有代码 <select id="xxx" resultType="xxxx"> SELECT …… </select>然后这个SQL是超级超级复杂的,我们不能对他进行任何改动,…

别再一张证件照用到底了,我建了个“个人形象库”

这可能就是未来职场人的标配吧——不仅要管理好自己的能力,还要高效、低成本地管理好自己的个人品牌形象。前阵子,更新简历,需要一张得体的职业形象照。 不爱去去照相馆,太折腾。想着试试在网上学了一些,自己写了…

渌口区市政建设局网站东莞浩智网站建设哪家好

因为经常使用LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;或其他缓存替换策略来管理存储在KV Cache中的数据&#xff0c;保证高效的数据访问。在Transformer等深度学习模型中&#xff0c;KV Cache被广泛应用于存储Self-Attention机制中的中间计算结…

武威市市建设局网站建筑业管理网站ie不兼容

&#x1f3b6;Leetcode 151. 反转字符串中的单词 难度&#xff1a;中等 ✨题目描述&#xff1a; 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 …

Vue3.5 + Node.js + Express 实现完整登录注册鉴权流程

​ 在前后端项目里,登录注册和权限鉴权基本算是 “老大难” 问题。做得不严谨,系统就会有漏洞;做得太复杂,又会让开发效率大打折扣。 这篇文章,我结合 Vue3.5 和 Node.js + Express,带大家梳理一下完整的登录注册…

【SPIE出版】第七届地球科学与遥感测绘国际学术会议(GRSM 2025)

第七届地球科学与遥感测绘国际学术会议将于2025年10月17-19日在中国-乌鲁木齐召开。【GRSM 往届均均已全部成功EI检索!】 【下半年遥感测绘、地球科学类重点会议!】 第七届地球科学与遥感测绘国际学术会议(GRSM 202…