c++算法学习笔记 (16) 约数

1. 试除法求约数

给定 n 个正整数 ai,对于每个整数 ai,请你按照从小到大的顺序输出它的所有约数。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个整数 ai。

输出格式

输出共 n 行,其中第 i 行输出第 i 个整数 ai 的所有约数。

数据范围

1≤n≤100
1≤ai≤2×10^9

输入样例:
2
6
8
输出样例:
1 2 3 6 
1 2 4 8 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1000010;
vector<int> get_divisiors(int n)
{ // 求n的所有约数vector<int> res;for (int i = 1; i <= n / i; i++){ // 这里n/i其实就是sqrt(n),不用i*i<=n因为怕溢出if (n % i == 0){res.push_back(i);if (i != n / i) // i和n/i都为约数,所以当i != n / i时加入n/i// (i==n/i时,因为之前已经加入i了,所以不用再加n/i了)res.push_back(n / i);}}sort(res.begin(), res.end());return res;
}
int main()
{int n;cin >> n;get_divisiors(n);while (n--){int x;cin >> x;auto res = get_divisiors(x);for (auto t : res){cout << t << " ";}cout << endl;}return 0;
}

2.约数个数

给定 n 个正整数 ai,请你输出这些数的乘积的约数个数,答案对 10^9+7 取模。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个整数 ai。

输出格式

输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7109+7 取模。

数据范围

1≤n≤100
1≤ai≤2×10^9

输入样例:
3
2
6
8
输出样例:
12

思路
一个数的约数是由这个数的几个质因子相乘得到的。

例如:12 的质因子有 2,3。12的约数有:1,2,3,4,6,12。

约数1 是由 0 个 2, 0 个3相乘得到的。
约数2 是由 1 个 2, 0 个3相乘得到的。
约数3 是由 0 个 2, 1 个3相乘得到的。
约数4 是由 2 个 2, 0 个3相乘得到的。
约数6 是由 1 个 2, 1 个3相乘得到的。
约数12 是由 2 个 2, 1 个3相乘得到的。
12 可以分解为:2^2*3^1。所以2可以取 0 ~ 2个,3种取法。3可以取 0~1 个,2种取法。12的约数一共:2 * 3 = 6个。

也就是:把一个数N 写成:N = (p1^x1^)(p^x2)(p3^x3)…(pk^xk),其中pi为质数。则N的约数个数为:(x1+1)(x2+1)(x3+1)…(xk+1)

(作者:Hasity
链接:https://www.acwing.com/solution/content/148964/
来源:AcWing)

#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int p = 1e9 + 7;
int main()
{int n;cin >> n;unordered_map<int, int> primes; // 存底数和指数while (n--){int x;cin >> x;for (int i = 2; i <= x / i; i++){while (x % i == 0){x /= i;primes[i]++; // 质因数的指数+1}}if (x > 1) // 如果有剩余,也是一个质因子primes[x]++;}long long int res = 1;for (auto prime : primes){res = res * (prime.second + 1) % p;}cout << res << endl;return 0;
}

3. 约数之和

给定 n 个正整数 ai,请你输出这些数的乘积的约数之和,答案对 10^9+7 取模。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个整数 ai。

输出格式

输出一个整数,表示所给正整数的乘积的约数之和,答案需对 109+7109+7 取模。

数据范围

1≤n≤100
1≤ai≤2×10^9

输入样例:
3
2
6
8
输出样例:
252
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int p = 1e9 + 7;
int main()
{int n;cin >> n;unordered_map<int, int> primes; // 存底数和指数while (n--){int x;cin >> x;for (int i = 2; i <= x / i; i++){while (x % i == 0){x /= i;primes[i]++; // 质因数的指数+1}}if (x > 1) // 如果有剩余,也是一个质因子primes[x]++;}long long int res = 1;for (auto prime : primes){int a = prime.first, b = prime.second; // 记录底数和指数// 秦九韶算法,求p^b+p^(b-1)+...+p+1;long long int t = 1;while (b--) // 指数从b开始遍历到0{t = (t * a + 1) % p; // 秦九韶算法公式}res = res * t % p;}cout << res << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt扫盲-D-Bus调试工具

D-Bus调试工具 一、概述二、安装d-feet三、使用d-feet 一、概述 在调试D-Bus时&#xff0c;如果只是在命令行下使用&#xff0c;效率并不是很高&#xff0c;我们可以使用更加直观的GUI工具来查看&#xff0c;我推荐使用 d-feet工具&#xff0c;这个能直观的查看系统总线和会话…

企业异地组网的挑战与解决方案

在当今互联的商业环境中&#xff0c;建立跨越不同地点的网络变得至关重要。本文将探讨企业异地组网的复杂性&#xff0c;并提供实用解决方案以应对这些挑战。通过了解创新技术如SD-WAN和网络安全措施&#xff0c;确保企业异地组网在性能和数据完整性方面的最佳表现。 由于距离和…

用例图画法

介绍 在软件工程中&#xff0c;用例图是一种用于描述系统功能和与之交互的参与者&#xff08;Actors&#xff09;之间关系的图形表示方法。 绘图步骤 确定参与者&#xff08;Actors&#xff09;&#xff1a;识别系统中的各个参与者&#xff0c;这些参与者可以是人、其他系统或外…

JavaScript初识及基本语法详解

JavaScript是一种广泛应用于Web开发的轻量级、解释型、面向对象的脚本语言&#xff0c;它支持事件驱动、函数式以及基于原型的编程风格。JavaScript不仅可以用于客户端&#xff08;在用户的浏览器中运行&#xff09;&#xff0c;也可以在服务端&#xff08;如Node.js环境&#…

unity学习(63)——预制体

1.运行发现预制体初始化的时候存在问题 这里有许多技巧&#xff0c;需要细看。 2.预制体在MapHandler.cs的定义如下 3.把MapHandler绑到相机上&#xff0c;在相机的属性栏中找到赋值部分。 4.size设置成2&#xff0c;然后把模型拖拽到1号索引位置上 5.运行之后预制体确实成功实…

【实例】React 状态管理库 MobX Redux 入门及对比

上一篇&#xff1a;【实例】React 组件传值方法: Props、回调函数、Context、路由传参 MobX MobX 是一个状态管理库&#xff0c;它提供了一种响应式的数据流方案&#xff0c;使得状态的变化能够自动地反映到相关的组件中。 MobX 的核心理念是可观察的状态&#xff08;Observa…

思科无线控制器配置学习

文章目录 简单拓扑WLC配置 简单拓扑 WLC配置 WLC#show running-config Building configuration...Current configuration : 11943 bytes ! ! Last configuration change at 16:22:44 UTC Thu Mar 14 2024 by admin ! version 17.9 service timestamps debug datetime msec se…

鸿蒙一次开发,多端部署(七)响应式布局

自适应布局可以保证窗口尺寸在一定范围内变化时&#xff0c;页面的显示是正常的。但是将窗口尺寸变化较大时&#xff08;如窗口宽度从400vp变化为1000vp&#xff09;&#xff0c;仅仅依靠自适应布局可能出现图片异常放大或页面内容稀疏、留白过多等问题&#xff0c;此时就需要借…

农业四情监测系统的工作原理

农业四情监测系统的工作原理【TH-Q1】农业四情监测系统是一种应用现代科技手段&#xff0c;以实现对农田环境信息的实时监测和数据采集的系统。这一系统通过对农田的土壤、气象、病虫害以及作物生长状况等四个方面的实时监测&#xff0c;帮助农民和农业管理者更好地了解和掌握农…

网络: 传输层

功能: 将数据从发送到传给接收端 UDP 无连接状态: 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠: 没有确认机制, 没有重传机制. 出错不会管面向数据包: 不能够灵活的控制读写数据的次数和数量 发送速度快: 立即发送 报文结构 TCP 面向连接可靠 校验和序列号(按…

测试框架到底是什么,如何定义?

测试框架的关键组件是什么&#xff1f; 测试执行引擎&#xff1a;协调测试的运行、管理序列和报告结果。 测试脚本存储库&#xff1a;存储将要执行的实际测试用例或脚本。 测试数据&#xff1a;测试执行所需的输入数据&#xff0c;可以是静态的、动态的或动态生成的。 存根和…

十四届蓝桥杯 冶炼金属(二分 / 公式)

二分代码1&#xff1a; #include<iostream> #include<cstdio> #include<cmath> using namespace std;int get(int a, int b){int l1;r1e91;while(l<r){int mid lr >>1;if(a / mid < b){r mid;}else l mid 1;}return l; } int main() {int n…

【机器学习】基于机器学习的分类算法对比实验

摘要 基于机器学习的分类算法对比实验 本论文旨在对常见的分类算法进行综合比较和评估&#xff0c;并探索它们在机器学习分类领域的应用。实验结果显示&#xff0c;随机森林模型在CIFAR-10数据集上的精确度为0.4654&#xff0c;CatBoost模型为0.4916&#xff0c;XGBoost模型为…

在Hive中使用Python编写的UDF函数

在Hive中使用Python编写的UDF函数&#xff0c;需要通过Hive的brickhouse库来实现。brickhouse库提供了一种将Python UDF函数与Hive集成的方法。以下是一个简单的示例&#xff0c;演示如何在Hive中使用Python编写的UDF函数transform&#xff1a; 首先&#xff0c;您需要安装bri…

Obsidian+PicGo+Gitee搭建免费图床

之前使用PicGoGitee配合Typora&#xff0c;后来因为换电脑Typora管理笔记不方便&#xff0c;换到Obsidian笔记&#xff0c;此处记录重新搭建图床的坑与经验。 主要参考# picGogitee搭建Obsidian图床&#xff0c;实现高效写作&#xff01; 1 下载安装PicGo 下载链接https://mo…

u盘表格不小心删除怎么恢复数据,u盘误删的表格怎么找回

u盘表格不小心删除怎么恢复数据?当我们使用U盘存储重要数据时,不小心删除文件或者整个表格可能会导致数据的丢失。这种情况下,我们需要采取一些措施来恢复被删除的数据。u盘误删的表格怎么找回?幸运的是,有一些方法可以帮助我们恢复U盘中的数据,即使它们被删除了。在本文…

5.78 BCC工具之sslsniff.py解读

一,工具简介 sslsniff工具可以用来追踪OpenSSL、GnuTLS和NSS的写入/发送和读取/接收函数。传递给这些函数的数据会以纯文本的形式打印出来。也就是用于捕获和分析 SSL/TLS 加密的网络流量。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function from…

球面数据的几何深度学习--球形 CNN

目录 一、说明二、球形 CNN概述三、球面数据的对称性四、标准&#xff08;平面&#xff09;CNN的局限性五、卷积并发症六、球面卷积七、球面卷积是不够的 一、说明 球面数据的几何深度学习–球形 CNN。通过对物理世界的平移对称性进行编码&#xff0c;卷积神经网络 &#xff…

AI 工具能检测到医生未发现的癌症征兆

一项 AI 工具已证明其能够侦测到人类放射科医师遗漏的癌症迹象。 这款名为 Mia 的 AI 工具在英国与 NHS 临床医生合作进行试点&#xff0c;分析了逾 10,000 名女性的乳房 X 光检查结果。 虽然大部分参与者没有癌症&#xff0c;但 AI 成功地标出了所有表现出乳腺癌症状的病例&…

备战2024年中学生古诗文大会(初中组):单选题真题和独家解析

今天我们继续来做中学生古诗文大会&#xff08;初中组&#xff09;——简称初中生古诗文大会的一些真题&#xff0c;让大家了解初中生古诗文大会的考察内容和形式&#xff0c;并且提供了我独家的题目解析和答案&#xff0c;供初中的同学们学习和参考。 有一些朋友问中学生古诗…