【信息奥赛题解】分解因数(详细分析题解 & C++ 代码)

1200:分解因数


时间限制: 1000 ms         内存限制: 65536 KB
提交数:28701    通过数: 16200

【题目描述】

给出一个正整数a𝑎,要求分解成若干个正整数的乘积,即a=a1×a2×a3×...×an,并且1<a1≤a2≤a3≤...≤an,问这样的分解的种数有多少。注意到a=a也是一种分解。

【输入】

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占11行,包括一个正整数a(1<a<32768)。

【输出】

n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数。

【输入样例】

2
2
20

【输出样例】

1
4

【原题链接】信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)icon-default.png?t=N7T8https://ybt.ssoier.cn/problem_show.php?pid=1200注意:a=a也是一种分解,统计时初始化为1(cnt=1)。

#include <iostream>
using namespace std;
int n, a, cnt;
void f(int a, int k) {
	if (k >= a) return; 	  //满足因子大于a 
	for (int i = k; i * i <= a; i++) { //从k开始分解 
		if (a % i == 0) { 	 //能够整除,是因子 
			cnt++;	    //加1 
			f(a / i, i);  //继续分解
		}
	}
}
int main() {
	cin >> n;
	while (n--) {
		cin >> a; //对a分解 
		cnt = 1; 	//自己本身也是一种分解方式
		f(a, 2); //a分解从2开始 
		cout << cnt << endl;
	}
	return 0;
}


相关推荐

  1. C++题解(9) 信息学一本通:1020:打印ASCII码

    2024-07-11 11:14:02       19 阅读
  2. 信息学一本通2067详解+代码

    2024-07-11 11:14:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 11:14:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 11:14:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 11:14:02       57 阅读
  4. Python语言-面向对象

    2024-07-11 11:14:02       68 阅读

热门阅读

  1. 【通信原理】matlab中pskmod的介绍

    2024-07-11 11:14:02       18 阅读
  2. Perl词法分析:构建编程语言解析器的指南

    2024-07-11 11:14:02       24 阅读
  3. Elasticsearch 搜索模板:重用和共享查询

    2024-07-11 11:14:02       25 阅读
  4. Spring Boot 自动装配原理

    2024-07-11 11:14:02       17 阅读
  5. JWT重放漏洞攻防策略

    2024-07-11 11:14:02       22 阅读
  6. QT跨平台开发(windows、mac)中.pro文件设置

    2024-07-11 11:14:02       19 阅读
  7. thinkphp:数据库复合查询-OR的使用

    2024-07-11 11:14:02       19 阅读
  8. 32. 小批量梯度下降法(Mini-batch Gradient Descent)

    2024-07-11 11:14:02       23 阅读
  9. MySQL相关函数

    2024-07-11 11:14:02       19 阅读
  10. 编程语言ju:探索、挑战与未来趋势

    2024-07-11 11:14:02       23 阅读