HJ6 质数因子HJ7 取近似值HJ8 合并表记录HJ9 提取不重复的整数

HJ6 质数因子

质数因子_牛客题霸_牛客网

题目分析

算法的核心是质因数分解,它通过以下步骤实现:

1. 处理2的因子

  • 首先,算法处理输入数n的2因子。因为2是最小的质数,也是唯一的偶数质数,所以首先检查n能被2整除多少次。
  • 使用一个while循环,只要n能被2整除(n % 2 == 0),就将2打印出来作为一个因子,并将n除以2。
  • 这个过程会一直继续,直到n不再是偶数(即不能被2整除)。

2. 处理大于2的因子

  • 一旦完成了所有的2因子,n此时必然是一个奇数。接下来,算法通过一个for循环,从3开始检查每一个奇数是否是n的因子,直到达到sqrt(n)
  • 对于每个这样的i(从3开始的奇数),使用一个内部while循环检查i是否能整除n。如果是,就将i打印为因子,并将n除以i,重复这个过程直到i不能整除n为止。
  • 这里为什么检查到sqrt(n)就足够了?因为如果n有一个因子f大于它的平方根,那么n必定还有一个因子小于或等于它的平方根(因为f1 * f2 = n,如果两个因子都大于sqrt(n),它们的乘积将大于n)。

3. 处理剩余的质数

  • 完成上述步骤后,如果n大于2,则n本身就是一个质数。因为任何合数在上述步骤中都已被分解成更小的质数因子,所以剩下的n一定是质数。
  • 最后,如果n大于2,直接将n打印出来。

acm模式

#include <iostream>int main() {int n = 0;std::cin >> n;while (n % 2 == 0) {std::cout << 2 << " ";n = (n / 2);}for (int i = 3; i*i <= n; i += 2) {while (n % i == 0) {n = n / i;std::cout << i << " " ;}}if (n > 2) std::cout << n <<std::endl;return 0;
}

HJ7 取近似值

取近似值_牛客题霸_牛客网

题目分析

我们可以使用C++的标准库函数。我们会接收一个正浮点数,然后根据它的小数部分决定是向上取整还是向下取整。在C++中,可以使用floor函数向下取整,使用ceil函数向上取整,但这里我们要根据小数点后的值决定取整的方向。

acm模式

#include <iostream>
#include <cmath>int main() {float i  = 0;std::cin >> i;float part = i - floor(i);if (part >= 0.5) std::cout << static_cast<int>(ceil(i)) << std::endl;else std::cout << static_cast<int>(floor(i)) << std::endl;return 0;
}

HJ8 合并表记录

合并表记录_牛客题霸_牛客网

题目分析

要实现这个功能,我们可以使用std::map来自动对index进行排序,并且合并相同index的value值。std::map是一个基于红黑树的容器,它可以保持键值对按键排序,并且每个键是唯一的。当我们尝试插入一个已经存在的键时,我们可以简单地将新的值加到已存在的值上。

#include <iostream>
#include <map>int main() {int n; // 存储键值对的个数std::cin >> n;std::map<int, int> records; // 使用map来自动排序并合并相同的indexfor(int i = 0; i < n; ++i) {int index, value;std::cin >> index >> value;records[index] += value; // 如果index已存在,value将被累加}// 遍历并输出合并后的键值对for(const auto& record : records) {std::cout << record.first << " " << record.second << std::endl;}return 0;
}

如果一定像我一样头铁也可以用unordered_map

acm模式

#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>int main() {int n = 0, index = 0, value = 0;std::unordered_map<int, int> umap;// std::vector<std::pair<int, int>> vec;std::cin >> n;while (n--) {std::cin >> index >> value;umap[index] += value;}std::vector<std::pair<int, int>> vec(umap.begin(), umap.end());// vec = vec(umap.begin(), umap.end());std::sort(vec.begin(), vec.end(),[](std::pair<int, int> &a, std::pair<int, int> &b){return a.first < b.first;});for (std::pair<int, int> &i : vec) {std::cout << i.first << " " << i.second << std::endl;}return 0;}

HJ9 提取不重复的整数

提取不重复的整数_牛客题霸_牛客网

题目分析

为了实现这个需求,我们可以按以下步骤进行:

  1. 从输入的整数中从右向左读取每一位数字。
  2. 检查当前数字是否已经在新的整数中出现过,如果没有,则将其加入到新的整数中。
  3. 继续读取下一位,直到处理完整个输入整数。
  4. 返回这个新构建的不含重复数字的整数。

为了方便检查数字是否已经被加入到新整数中,我们可以使用一个std::set<int>来存储已经处理过的数字,因为集合自动处理重复项。

acm模式

#include <iostream>
#include <set>int main() {int input;std::cin >> input;std::set<int> seenDigits;int result = 0;while (input > 0) {int digit = input % 10; // 获取最右边的数字if (seenDigits.insert(digit).second) { // 如果数字尚未出现过result = result * 10 + digit; // 将数字添加到结果中}input /= 10; // 移除已处理的最右边数字}std::cout << result << std::endl;return 0;
}

我的题解

#include <iostream>
#include <set>
#include <unordered_set>int main() {int n = 0, num = 0;// std::set<int> uset;std::unordered_set<int> uset;std::cin >> n;while(n > 0) {num = n % 10;if (uset.find(num) == uset.end()) {uset.insert(num);std::cout << num;}n = n / 10;}// for (int i : uset) {//     std::cout << i;// }return 0;
}

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

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

相关文章

vsc ctrl+. 无效的问题

描述 ubuntu ibus 输入法 vsc ctrl.快捷键无效 输出 _e 解决方案: 运行 ibus-setup 把表情符号这里的快捷键改了

MR混合现实情景实训教学系统在消防安全模拟上的教学应用

MR混合现实情景实训教学系统在消防安全模拟上的教学应用&#xff0c;将为消防安全教育带来一场革命性的改变。该系统能通过混合现实技术将真实环境与虚拟环境结合&#xff0c;让学生亲身体验到真实的火灾现场&#xff0c;并在模拟环境中进行实践操作&#xff0c;提高消防安全意…

Linux系统——Mysql索引详解

目录 一、索引介绍 1.索引的概念 2.索引的作用 3.索引的缺点 4.创建索引的原则依据 5.索引优化 二、索引的分类和创建 1.索引分类 1.1普通索引 1.1.1直接创建索引 1.1.2修改表方式创建 1.1.3创建表的时候指定索引 1.2唯一索引 1.2.1直接创建唯一索引 1.2.2修改表…

mysql 空间查询 多边形内的点

数据库查询 # 1新增空间point类型坐标字段 ALTER TABLE gaoxin_isdp.business_master ADD COLUMN location2 point NULL AFTER location;# 2从原字段更新点位字段&#xff0c;原字段poi1是字符串106.474596,29.464360 UPDATE business_master SET location POINT(substr(poi…

基于Springboot+Vue的前后端分离的简单Demo案例(一)

后端创建Springboot项目 创建数据库表结构及表信息 添加依赖&#xff08;pom.xml&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/X…

微服务网关介绍

1. 为什么是Spring Cloud Gateway 一句话&#xff0c;Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引用的还是Zuul 1.x版本&#xff0c;而这个版本是基于过滤器的&#xff0c;是阻塞IO&#xff0c;不支持长连接。Zuul 2.x版本跟1.x的架构大一样&#xff0c;性能也有…

GraalVM详细安装及打包springboot、java、javafx使用教程(打包普通JAVA项目篇)

前言 在当前多元化开发环境下&#xff0c;Java作为一种广泛应用的编程语言&#xff0c;其应用部署效率与灵活性的重要性日益凸显。Spring Boot框架以其简洁的配置和强大的功能深受开发者喜爱&#xff0c;而JavaFX则为开发者提供了构建丰富桌面客户端应用的能力。然而&#xff…

ArcGis 地图文档

ArcGis官网 https://developers.arcgis.com/labs/android/create-a-starter-app/ Arcgis for android 加载谷歌、高德和天地图 https://blog.csdn.net/qq_19688207/article/details/108125778 AeroMap图层地址: API_KEY: 7e95eae2-a18d-34ce-beaa-894d6a08c5a5 街道图&#xf…

Python模块与包管理使用pip与virtualenv【第151篇—模块与包管理】

Python模块与包管理&#xff1a;使用pip与virtualenv 在Python开发中&#xff0c;模块和包管理是至关重要的&#xff0c;它们使得代码的组织、重用和共享变得更加简单和高效。本文将介绍两个Python生态系统中最常用的工具&#xff1a;pip和virtualenv。通过这些工具&#xff0…

探索医用制氧机的种类及其应用场景

医用制氧机是一种能够制取高纯度氧气的制氧设备&#xff0c;广泛应用于各种场景。随着科技的进步和行业需求的增加&#xff0c;医用制氧机的种类和应用领域也在不断扩展。本文将探索医用制氧机的多元种类及其应用领域&#xff0c;以更好地了解这一设备的重要性。 一、医用制氧机…

docker构建镜像命令

编写dockerfile文件 例子1; FROM oraclelinux:7-slim ENV release19 ENV update13 RUN curl -o /etc/yum.repos.d/public-yum-ol7.repo https://yum.oracle.com/public-yum-ol7.repo && \yum-config-manager --enable ol7_oracle_instantclient && \yum in…

Git:分布式版本控制系统

目录 Git的特点和功能常见的功能和对应的命令 Git的特点和功能 Git是一个分布式版本控制系统&#xff0c;用于跟踪和管理项目的代码变更。它是由Linus Torvalds在2005年创建的&#xff0c;旨在管理Linux内核的开发。Git具有以下特点和功能&#xff1a; 分布式版本控制&#xf…

企业数字化问题,一个系统能否解决?

在企业数字化转型的过程中&#xff0c;很多企业都会遇到各种各样的问题。有时候&#xff0c;这些问题并不仅仅是技术上的挑战&#xff0c;而更多地涉及到企业管理和运营的主要问题。贪大求全、策略失误、软件公司的“上游路线”等现象&#xff0c;都可能成为企业数字化建设失败…

java并发编程之 volatile关键字

1、简单介绍一下JMM Java 内存模型&#xff08;Java Memory Model 简称JMM&#xff09;是一种抽象的概念&#xff0c;并不真实存在&#xff0c;指一组规则或规范&#xff0c;通过这组规范定义了程序中各个变量的访问方式。java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问…

快速区分清楚图形渲染中的AABB,KD树和BVH这些概念

快速区分清楚图形渲染中的AABB&#xff0c;KD树和BVH这些概念 主要想形象去区分好这些术语&#xff0c;目的是扫盲&#xff0c;先开好坑&#xff0c;内容持续填充。 0.先摆出这些词的全称 AABB&#xff1a; 原名&#xff1a;axis aligned bounding box&#xff1b;中文直译名…

流畅的 Python 第二版(GPT 重译)(二)

第三章&#xff1a;字典和集合 Python 基本上是用大量语法糖包装的字典。 Lalo Martins&#xff0c;早期数字游牧民和 Pythonista 我们在所有的 Python 程序中都使用字典。即使不是直接在我们的代码中&#xff0c;也是间接的&#xff0c;因为dict类型是 Python 实现的基本部分。…

科技助力高质量发展:新质生产力的崛起与企业数字化转型

引言 随着科技的飞速发展&#xff0c;我们正逐渐步入数字化智能时代&#xff0c;这个时代不仅为企业带来了无限的机遇&#xff0c;也让其面对前所未有的挑战。在这个快速变革的时代&#xff0c;企业必须不断调整自己的经营策略&#xff0c;适应数字化转型的浪潮&#xff0c;以…

使用appuploder上架App Store流程

使用appuploder流程笔记 1.如何没有账号去apple官网注册一个&#xff0c;地址&#xff1a;https://developer.apple.com/account 2.下载解压appuploder&#xff0c;双击打开&#xff0c;用刚刚注册的账号登录&#xff0c;下载地址&#xff1a;http://www.applicationloader.n…

PHP连接达梦数据库

PDO是一种在PHP中连接数据库的接口&#xff0c;可以通过PDO接口使用PHP连接达梦数据库。 1、安装PHP环境 检查当前环境是否安装PHP [rootlocalhost ~]# php -v 当前环境并未安装PHP&#xff0c;需要进行安装&#xff0c;选择安装PHP7.3版本。 2、安装 epel-release源和源管…