递归--练习5--noi1751分解因数
递归--练习5--noi1751分解因数
一、心得
想清楚子问题
想清楚递推表达式
没有全部AC说明还有自己没有想到的位置,试边界情况和查看题目要求
二、题目
1751:分解因数
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * ... * an,并且1 < a1 <= a2 <= a3 <= ... <= an,问这样的分解的种数有多少。注意到a = a也是一种分解。
- 输入
- 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (1 < a < 32768)
- 输出
- n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数
- 样例输入
-
2
2
20 - 样例输出
-
1
4
三、AC代码
/*
noi1751分解因数
20
2*10
2*2*5
4*5
20
从1到n
寻找子问题
当分离出来一个因数之后,剩下的数是一个子问题 24
2*12(所有12的情况)12 2*6 3*4 2*2*3
3*8(所有8的情况)1*8 2*4 2*2*2
4*6(所有6的情况)6 2*3
24这种 我开始就没把递推关系式想清楚
递推表达:
因式分解
f(20)=1+f(10)+f(5)
2 1
f(24)=1+f(12)+f(8)+f(6)
f(12)=1+f(6)+f(4)//1+2+2
f(8)=1+f(4)//1+2
f(6)=1+f(3)//1+1 */
#include <iostream>
#include <cstdio>
using namespace std;
int f(int n,int m){
int ans=;//算上本身那种情况
if(n==) return ;
for(int i=m;i*i<=n;i++){//从2开始遍历找所有的能分解的情况
if(n%i==){
//上面相当于把子问题漏掉的那种情况加上了
ans+=f(n/i,i);//把子问题的所有情况也加上
39 //因为 a = a1 * a2 * a3 * ... * an,并且1 < a1 <= a2 <= a3 <= ... <= an,
40 //因为后面的因数要比前面大,漏了这一个
}
}
return ans;
}
int main(){
//freopen("in.txt","r",stdin);
int n;
cin>>n;
for(int i=;i<=n;i++){
int a;
cin>>a;
int ans=f(a,);
cout<<ans<<endl;
} return ;
}
所以递归里面多了一个变量m、
递归--练习5--noi1751分解因数的更多相关文章
- 【noi 2.2_1751】分解因数(递归)
题意:问一个给定正整数的分解因数的方式数.N=a1*a2*...*ak(a1<=a2<=...<=ak). 解法:一步步分解该数,总方式数为一个个因数被分解的方案数之和. 可用大括号 ...
- BZOJ-2257 瓶子和燃料 分解因数+数论方面乱搞(裴蜀定理)
一开始真没想出解法...后来发现那么水.... 2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 970 So ...
- BZOJ_1005_ [HNOI2008]_明明的烦恼_(组合数学+purfer_sequence+高精度+分解因数+快速幂)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1005 一棵树有n个点,给出没给节点的度,如果没有限制则为-1,求共有多少种可能的树. 分析 蒟 ...
- Java实现 POJ 2749 分解因数(计蒜客)
POJ 2749 分解因数(计蒜客) Description 给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * - * an,并且1 < a1 <= ...
- 【递归】先修课 计算概论(A) / 函数递归练习(3)2:分解因数
#include<cstdio> using namespace std; bool is_prime(int x) { ;i*i<=x;i++) ) return false; r ...
- OpenJudge 2749 分解因数
1.链接地址: http://bailian.openjudge.cn/practice/2749/ 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一个正整数a,要求分 ...
- CF 577A 分解因数
输入一个n 构成一个n*n的表 这个表里的数 第i行j列的值为i*j 问x在这个表里出现了几次 Sample test(s)input10 5output2input6 12output4input5 ...
- PHP 文件夹操作「复制、删除、查看大小」递归实现
PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...
- python中的函数以及递归
一 函数 函数的组成: def funname(parameters): instructions.... 在探讨函数的定义之前,让我们想想,如果我们写了上千行代码,其实各种变量定义,循环..... ...
随机推荐
- sprintf函数详解
转摘声明:选自<CSDN 社区电子杂志——C/C++杂志> 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样 ...
- HDU Palindrome subsequence(区间DP)
Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65535 K (Java/Oth ...
- Golang学习 - builtin 包
Go builtin包提供了go预先声明的函数.变量等的文档.这些函数变量等的实现其实并不是在builtin包里,只是为了方便文档组织. 这些内置的变量.函数.类型无需引入包即可使用. 默认提供的有: ...
- 用Oracle实现ASH的数据透视图
11g里面有个很有用的新特性,对数据透视图的支持. 简单而言,它可以实现宽表和窄表之间的转化.举一个例子,有一张表记录了全校所有班级所有学生的成绩(A,B,C,D,E),现在想统计每个班级里每个分数级 ...
- 'module' object has no attribute 'select'
和tensorflow的版本有关系 新版本 将tf.select替换为tf.where
- beans有无状态
Spring Bean Scopes https://www.tutorialspoint.com/spring/spring_bean_scopes.htm When defining a < ...
- 设置webView头部不能滑动
设置webView头部不能滑动 _webView.scrollView.bounces=NO;
- 洛谷P1373 小a和uim之大逃离 dp
正解:dp 解题报告: 传送门! 同样是看到列表发的题解就想着跟着做下dp的题目趴 然后发现还挺难的,,,反正我只大概想到怎么转移但是初始化什么的都不会TT 所以还是大概说下QAQ 首先可以想到设f[ ...
- sql server 里的文件和文件组使用
转自:https://www.cnblogs.com/woodytu/p/5821827.html 参考:https://www.sqlskills.com/blogs/paul/files-and- ...
- umlの交互图
版权声明:本文为博主原创文章,若要转载请注明出处!^_^ https://blog.csdn.net/u010892841/article/details/24920155 前面介绍了uml的非常多种 ...