递归--练习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.... 在探讨函数的定义之前,让我们想想,如果我们写了上千行代码,其实各种变量定义,循环..... ...
随机推荐
- Laravel 5.7 No 'Access-Control-Allow-Origin' header is present on the request resource
前后端项目跨域访问时会遇到此问题,解决方法如下: 创建一个中间件 php artisan make:middleware EnableCrossRequestMiddleware 该中间件的文件路径为 ...
- Publish over SSH插件安装
1 Publish over SSH插件安装 打开Jenkins的“系统管理>管理插件”,选择“可选插件”,在输入框中输入“Publish over SSH”进行搜索,如果搜索不到可以在“已安装 ...
- Mysql的存储引擎和索引
可以说数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能忍受的.我们非常容易想象出一个只有单关键字组成的表如何使用B+树进行索引,只要将关键字存储到树的节点即可.当数据 ...
- Linux服务器报错too many open files错误解决方案
1.本质解决方案按照oracle的安装脚本中以下几项文件进行相应配置: cp /etc/security/limits.conf /etc/security/limits.conf.bak echo ...
- Python开发【Django】:组合搜索、JSONP、XSS过滤
组合搜索 做博客后台时,需要根据文章的类型做不同的检索 1.简单实现 关联文件: from django.conf.urls import url from . import views urlpat ...
- web前端开发http-server
windows环境下需先安装npm 安装 npm install -g http-server http-server -a hostip -p port
- mysql备份的4种方式
mysql备份的4种方式 转载自:https://www.cnblogs.com/SQL888/p/5751631.html 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 ...
- Select触发事件
案例1: <script type="text/JavaScript"> function gradeChange(){ var objS = document.ge ...
- laravel常用的artisan命令
转载来源链接: https://blog.csdn.net/jiandanokok/article/details/72897682 全局篇 查看artisan命令 php artisan php a ...
- Java基础知识Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是相对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...