递归--练习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.... 在探讨函数的定义之前,让我们想想,如果我们写了上千行代码,其实各种变量定义,循环..... ...
随机推荐
- CentOS7使用yum安装LNMP环境以后无法打开php页面
CentOS7使用yum安装LNMP环境以后无法打开php页面 页面提示为File not found 查看nginx错误日志/var/log/nginx/error.log提示如下 原因分析 ngi ...
- SaltStack配置管理-状态间关系
上一篇:SaltStack配置管理-LAMP状态设计 include包含 上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装 lamp.sls include: - apache ...
- LightOj 1422 Halloween Costumes(区间DP)
B - Halloween Costumes Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- NGINX:sticky模块实现基于cookie的负载均衡
Sticky模块 简述: 之前公司部署了一套网站及时发布系统,架构如下图所示:Nginx做前端代理,发布系统用tomcat运行,一台共享存储,一台数据库服务器:由于网站及时发布系统涉及到了用户登录操作 ...
- Ubuntu操作异常汇总
1.使用Ubuntu的apt-get安装软件时出现以下错误: Reading package lists... Done Building dependency tree... Done Packag ...
- centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar,tgz 第九节课
centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar,tgz 第九节课 SAS盘可以支持热插拔,看机器 tar.zip.tar -czvf 不会动源文件,gz ...
- [RGEOS]数学基础
1.向量Vector3d using System; namespace RGeos.Geometry { /// <summary> /// 3D向量类 /// </summary ...
- java多线程(四)
使用synchronized锁实现线程同步 为什么要用线程同步 我们先来看下这段代码的运行结果: Java学习交流群:495273252 在多线程上篇博客已经介绍过了,JVM采用的是抢占式调度模型,当 ...
- OA项目_环境搭建
OA项目现在要做成微服务,用的框架是springboot,所用的编程工具是idea,maven,做为一个程序员最关心的就是我需要在那个架包中编写代码,我们只需关注domain,repository,s ...
- Liferay portlet首选项(preferences)设置、存储处理
最近使用Liferay做项目集成,由于团队人员在之前对Liferay这东西都没有充分的了解,用起来着实费了不少力气,最近为了为定制好的portlet添加初始化信息,翻阅了一些文章,下面是了解到的关于初 ...