博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9718 整数因子分解(必做) 分治法
阅读量:5312 次
发布时间:2019-06-14

本文共 1610 字,大约阅读时间需要 5 分钟。

9718 整数因子分解(必做)

时间限制:1000MS  内存限制:1000K

提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC;VC;JAVA

 

Description

大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm, 每个xi为大于1的因子,即1
<=n 。例如:当n=12时,共有8种不同的分解式:12 = 1212 = 6*212 = 4*312 = 3*412 = 3*2*212 = 2*612 = 2*3*212 = 2*2*3对于给定正整数n,计算n共有多少种不同的分解式。

输入格式

第一行一个正整数n (1<=n<=1000000)

输出格式

不同的分解式数目

 

输入样例

12

 

 

输出样例

8 考虑先暴力写出前几项。 数字:1、2、3、4、5、6、7、8、9、10、11、12 ans:1、1、1、2、1、3、1、4、2、3 、 1、 8 所以递推式就是fun(val) = val的所有因子的答案加起来(不包括自己, 然后 + 1,就是加上自己)。递归求解即可。 为什么这样是答案呢? 因为其是考虑顺序的,那么ans就是第一个数字是2的分拆数总和 + 第一个数字是3的分拆数总和。 第一个数字是2的分拆数总和是多少?就是2 * (6的分拆数)递归求解。

提示

 

此题因子讲顺序的.第一个因子可能是2~n之间的数.

比如对12而言,第一个因子可能是2,3,4,6,12.

 

将第一个因子为2的分解个数,加上第一个因子为3的分解个数,...,直至加到第一个因子为12的分解个数.

 

而第一个因子为2的分解个数又是多少呢?是6(因为12/2=6)的分解个数,递归求解!

 
#include 
#include
#include
#include
#include
#define IOS ios::sync_with_stdio(false)using namespace std;#define inf (0x3f3f3f3f)typedef long long int LL;#include
#include
#include
#include
#include
#include
#include
const int maxn = 1000000 + 20;LL dp[maxn];LL find(int val) { if (dp[val]) return dp[val]; LL ans = 1; for (int i = 2; i <= val / 2; ++i) { if (val % i != 0) continue; dp[i] = find(i); ans += dp[i]; } return ans;}void work() { int n; cin >> n; dp[1] = 1; LL ans = 1; for (int i = 2; i <= n / 2; ++i) { if (n % i != 0) continue; dp[i] = find(i); ans += dp[i]; } cout << ans << endl;}int main() {#ifdef local freopen("data.txt","r",stdin);#endif work(); return 0;}
View Code

 

转载于:https://www.cnblogs.com/liuweimingcprogram/p/6074080.html

你可能感兴趣的文章
变量提升
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>