acwing869. 试除法求约数870. 约数个数AcWing871. 约数之和872. 最大公约数

869. 试除法求约数
思路:

约数和质数的求解有着共性, 就是都是使用

for (int i = 1; i <= n/i; ++i)

进行计算的。这样的原因是因为约数必然也是两两一组, 那么我们求出小的自然也就知道另一个,只要再判断一下n/i和i是否相同,就行了。但是由于设计到输出的时候的排序问题,所以我们使用sort函数进行排序。最后输出。

代码:
#include <iostream>

using namespace std;

// 暴力解法, 会超时
/*
int main ()
{
    int n, a;
    scanf ("%d", &n);

    while (n--)
    {
        scanf ("%d", &a);
        for (int i = 1; i <= a; ++i)
            if (a%i == 0) printf ("%d ", i);
        printf ("\n");
    }
}
*/

#include <algorithm>
#include <vector>

vector<int> get_divisors (int n)
{
    vector<int> res;

    for (int i = 1; i <= n/i; i++)
    {
        if (n%i == 0)
        {
            res.push_back (i);
            if (i != n/i) res.push_back (n/i);
        }
    }

    sort (res.begin (), res.end ());

    return res;
}

int main ()
{
    int a, n;
    scanf ("%d", &a);

    while (a--)
    {
        scanf ("%d", &n);
        auto res = get_divisors (n);

        for (auto t : res) printf ("%d ", t);
        printf ("\n");
    }
}

我不会的地方再说一遍:

vector容器输入是push_back(), 头是begin(), 尾的下一个是end(), 这几个都是指针。

870. 约数个数
思路:

约数的个数公式将n分解成质因子

也就是说,多个数的乘积的约数,我们可以通过分别求数的质因子及指数·, 通过unordered_map容器统计出质因子分别的个数,其实我们也就知道了乘积的质因子个数。

代码:
#include <iostream>
#include <vector>
#include <unordered_map>

using namespace std;
typedef long long LL;
const int mod = 1e9+7;

int main ()
{
    int n;
    scanf ("%d", &n);
    unordered_map<int, int> primes;

    while (n--)
    {
        int a;
        scanf ("%d", &a);

        for (int i = 2; i <= a/i; i++)
            while (a%i == 0)
        {
            a /= i;
            primes[i] ++;
        }

        if (a > 1) primes[a] ++;
    }

    LL res = 1;
    for (auto prime : primes) res = res*(prime.second+1)%mod;

    cout << res << endl;

    for (auto prime : primes) cout << prime.first << " " << prime.second << endl;
}

871. 约数之和
思路:

n个数乘积的约数和和约数个数的求法有相同之处。

找了一个公式,p1、p2分别表示底数, a1、a2分别表示指数。也就是咱们前面求出质因子及对应的指数之后我们分别求出质因子的0到指数(设为a)的和并相乘。

代码:
#include <iostream>
#include <vector>
#include <unordered_map>
#include <math.h>

using namespace std;

const int mod = 1e9+7;

typedef long long LL;

int main ()
{
    int n;
    cin >> n;
    unordered_map<int, int> primes;

    while (n--)
    {
        int a;
        cin >> a;

        for (int i = 2; i <= a/i; ++i)
        {
            while (a%i == 0)
            {
                a /= i;
                primes[i] ++;
            }
        }

        if (a > 1) primes[a]++;
    }

    LL res = 1;
    for (auto prime : primes)
    {
        int p = prime.first, a = prime.second;
        LL t = 1;
        while (a--) t = (t*p + 1) % mod;
        res = res * t % mod;

        cout << prime.first << " " << prime.second << " " << t << " " << res << endl;
    }
    cout << res << endl;
}

这里的这一行while (a--) t = (t*p + 1) % mod;质因子从指数为0相加到指数为a。

872. 最大公约数

代码:

#include <iostream>

using namespace std;

int gcd (int a, int b)
{
    if (b == 0)
        return a;

    return gcd(b, a % b);
}

int main ()
{
    int n;
    cin >> n;

    while (n--)
    {
        int a, b;
        cin >> a >> b;
        cout << gcd(a, b) << endl;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目安全问题及解决方法-----xss处理

XSS 问题的根源在于&#xff0c;原本是让用户传入或输入正常数据的地方&#xff0c;被黑客替换为了 JavaScript 脚本&#xff0c;页面没有经过转义直接显示了这个数据&#xff0c;然后脚本就被 执行了。更严重的是&#xff0c;脚本没有经过转义就保存到了数据库中&#xff0c;随…

ReactNative实现文本渐变

我们直接上图&#xff0c;可以看到上面文本的效果&#xff0c;使用SVG实现 1.首先还是要引入react-native-svg库 2.使用该库下面的LinearGradient和Text 好&#xff0c;话不多说&#xff0c;我们看具体代码 <Svg width{422} height{30} viewBox{0 0 422 30}><Defs&…

力扣 第 383 场周赛 解题报告 | 珂学家 | Z函数/StringHash

前言 谁言别后终无悔 寒月清宵绮梦回 深知身在情长在 前尘不共彩云飞 整体评价 T3是道模拟题&#xff0c;但是感觉题意有些晦涩&#xff0c;T4一眼Z函数&#xff0c;当然StringHash更通用些。 新年快乐, _. T1. 将单词恢复初始状态所需的最短时间 I 思路: 模拟 就是前缀和为…

构建高效直播美颜系统:美颜SDK集成与性能优化指南

如今&#xff0c;美颜技术的广泛应用成为各类直播平台的标配之一。今天&#xff0c;小编将与大家进一步讨论如何构建高效的直播美颜系统&#xff0c;重点关注美颜SDK的集成和性能优化方面。 一、美颜SDK的选择与集成 选择合适的美颜SDK是构建高效直播美颜系统的第一步。不同的…

速过计算机二级python——第六讲:文件操作

第六讲:文件操作 文件夹创建文件夹移动文件夹复制文件夹删除文件夹文件操作文件读取文件写入文件文件夹 创建文件夹 定义创建文件夹函数:chmk_path()定义一个函数 chmk_path(),这个函数的功能是创建文件夹。 首先需要导入操作系统接口模块——os 模块,这个模块中包含某些函…

基于单片机控制的智能门锁设计

摘要&#xff1a;阐述基于STC15F2K60S2单片机控制的智能门锁设计&#xff0c;包括CPU控制单元模块、液晶显示LCD、 Wi-Fi模块&#xff0c;实现远程控制开门&#xff0c;密码开门的智能化功能。 关键词&#xff1a;控制技术&#xff0c;单片机&#xff0c;智能门锁&#xff0c;…

cesium-测量高度垂直距离

cesium做垂直测量 完整代码 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><el-breadcrumb-i…

WebChat——一个开源的聊天应用

Web Chat 是开源的聊天系统&#xff0c;支持一键免费部署私人Chat网页的应用程序。 开源地址&#xff1a;https://github.com/loks666/webchat 目录树 TOC &#x1f44b;&#x1f3fb; 开始使用 & 交流&#x1f6f3; 开箱即用 A 使用 Docker 部署B 使用 Docker-compose…

C++ 之LeetCode刷题记录(二十八)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 144. 二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍…

JAVA Web 学习(五)Nginx、RPC、JWT

十二、反向代理服务器——Nginx 支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&#xff0c;即使运行几个月也不需要重新启动&#xff0c;还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量&#xff0c;其占用内存少、并发能力强、能支持…

docker下nacos(1.2.0)的持久化

一、创建数据库 运行以下代码自动创建数据库和表 CREATE DATABASE IF NOT EXISTS nacos_config /*!40100 DEFAULT CHARACTER SET utf8 */; USE nacos_config;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for config_…

【LeetCode】刷题总结 - 15. 三数之和

15. 三数之和 | LeetCode 思路 首先对 nums 进行排序&#xff0c;然后设置三个指针&#xff1a;left、mid、right&#xff1a; left 从最左边开始&#xff0c;依次向后遍历每次固定住 left 后&#xff0c;就化为一个 2sum 问题&#xff1a; mid left 1&#xff0c;right …

go-redis hash slot 之旅

搭建redis 集群 创建一个网桥 docker network create -d bridge --subnet192.168.148.0/24 --gateway192.168.148.1 -o parenteno1 redis-net通过docker 文件创建redis 集群&#xff0c; 这里注意要不要使用redis 7以上的版本&#xff0c;不然会出问题 version: "3&quo…

详解spring6.0新特性汇总

spring6新特性汇总 part1 spring6.0新特性 spring6.0 2022年11月。新一代框架带jdk17&jakarta ee9 https://www.graalvm.org/ part2 AOP&事务 1.AOP:面向切面编程 通过预编译方式和运行期动态 代理实现程序功能的统一维护的一种技术。 使用场景&#xff1a; 权…

vivado 手动设置自下而上的流量并导入网表、创建较低级别的网表

手动设置自下而上的流量并导入网表 要手动运行自下而上的流&#xff0c;请将较低级别的网表或第三方网表实例化为黑色盒子&#xff0c;Vivado工具在合成完成后将黑盒子融入完整的设计中。这个以下部分描述了该过程。 重要&#xff01;Vivado合成不合成或优化加密或非加密合成…

信任与创新 | 回顾通付盾的2023!

-END- 数信云&#xff0c;基于区块链与人工智能的数据安全应用与服务平台

ReactNative实现弧形拖动条

我们直接看效果 先看下面的使用代码 <CircularSlider5step{2}min{0}max{100}radius{100}value{30}onComplete{(changeValue: number) > this.handleEmailSbp(changeValue)}onChange{(changeValue: number) > this.handleEmailDpd(changeValue)}contentContainerStyle{…

【自动化测试】----Java的单元测试工具Junit5

目录 支持Java的最低版本为8在pom.xml添加依赖Junit提供的注解功能 断言 Assertion类提供的一些方法测试用例执行顺序 &#xff08;为了预防测试用例执行顺序错误&#xff09;参数化 &#xff08;假设登陆操作&#xff0c;用户名和密码很多&#xff0c;尽可能通过一个测试用例…

springboot+vue实现excel导出

后端 导入pom依赖 <dependency>x<groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.2.0</version> </dependency> Entity实体类 这里以User为例&#xff0c;可按照自己实际…

【leetcode题解C++】450.删除二叉搜索树中的节点 and 669.修剪二叉搜索树 and 108.将有序数组转换为二叉搜索树

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可…
最新文章