vector习题

news2025/7/19 4:23:25

完数和盈数

题目

完数VS盈数_牛客题霸_牛客网

一个数如果恰好等于它的各因子(该数本身除外)之和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。

输入描述:

题目没有任何输入。

输出描述:

输出2到60之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。

代码

思路:

定义一个函数求出某个数的因数之和sum

定义两个数组wan和yin

遍历2到60,把这些数和对应的sum对比,从而符合条件的数加到wan和yin两个数组中。再打印输出。

 
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<vector>
using namespace std;
​
/*
参数:int num
返回值:各参数之和 int
处理:求某个数的因数之和
*/
int FactorNum(int num) {
    int sum = 0;
    for (int i = 1; i < num; i++) {
        if (num % i == 0) {
            sum += i;
        }
    }
    return sum;
}
​
int main() {
    vector<int> wan;
    vector<int> yin;
    for (int i = 2; i <= 60; i++) {
        /*
        若因子之和等于该数,则称其为“完数”
        若因子之和大于该数,则称其为“盈数”
        */
        int sum = FactorNum(i);
        if (sum == i) {
            wan.push_back(i);
        } else if (sum > i) {
            yin.push_back(i);
        }
    }
   printf("E:");
    //打印所有的完数 E: e1 e2 e3 .......(ei为完数)
    for (int i = 0; i < wan.size(); i++) {
        printf(" %d", wan[i]);
    }
     printf("\nG:");
    //打印所有的盈数G: g1 g2 g3 ......(gi为盈数)
    for (int i = 0; i < yin.size(); i++) {
        printf(" %d", yin[i]);
    }
     printf("\n");
    return 0;
}
​
​
代码分析

代码分析

对于以上的代码,我们要注意以下问题:

题目要求打印的格式是:E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。所以我设置的思路是:

printf("E:"); 不加空格

printf(" %d", wan[i]); 遍历的时候空格加在前面

printf("\nG:"); E.G之间要换行;

结果吐槽:

一直自测不过,一提交竟然通过了;

剩下的树

题目:

剩下的树_牛客题霸_牛客网

输入:

500 3
100 200
150 300
470 471

输出:

298

分析:

500表示区间马路长度为500,3表示3个要移除树的区间,

然后再输入这3个区间;

最终输出就是剩下的树是多少。

输入:

L表示区间长度 M表示区间个数

再输入M个区间(left,right)

输出:移走所有区间的树之后剩下的树的个数 resultNum

思路:

创建一个数组vector<int> road(L+1);表示这条马路上有L颗树

我们可以将树存在设为0,树不存在设为1;

移走m棵树就等于将road数组中的m个0改为1;

最后看一下剩下有多少个0;

​
​

点评:这道题只要你理解了题目的输入,输出的含义;在代码实现上就不难了。故重在看懂题目;

结果:

糖果分享游戏

题目:

3426. 糖果分享游戏 - AcWing题库

一些学生围坐一圈,中间站着他们的老师,所有人都面向老师。 他们要玩一个有关糖果分享的游戏。 每个学生最开始都有一定数量的糖果(保证一定是偶数)。 每轮游戏的进程为: 老师吹起哨声,所有学生同时拿出自己一半数量的糖果,递给右边相邻的同学。 传递完成后,所有拥有奇数数量糖果的同学都将再得到一颗糖果。 游戏将不断进行,直到所有学生拥有的糖果数量均相等为止。 现在,给定所有学生的初始糖果数量,请确定游戏进行的总轮次数以及游戏结束后每个学生的糖果数量。 

分析:

1.输入:

第一行:N,表示学生数量

接下来N行:

输出: 以逆时针方向描述每个学生的初始糖果数量

2.输出:

首先输出游戏总轮次,然后输出游戏结束后每个人的糖果数量。

15 14
17 22
4 8

思路:

定义一个数组vector<int> canddys(N); (存储学生的糖果),并根据输入为它赋值。

处理游戏过程:

老师吹起哨声,所有学生同时拿出自己一半数量的糖果,递给右边相邻的同学。 传递完成后,所有拥有奇数数量糖果的同学都将再得到一颗糖果。

在每一轮循环中: 先把每个数的初值的一半存在一个数组OldNum中,把这些值赋给candy数组下一个数;

最后检查一下candy数组中的元素,若为奇数,则+1

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<vector>
using namespace std;
bool checkCandy(vector<int>& candy);
void swap(vector<int>& candy);
​
bool checkCandy(vector<int>& candy) {
    int resultNum = candy[0];
    for (int i = 1; i < candy.size(); i++) {
        if (candy[i] != resultNum) {
            return false;
        }
    }
    return true;
}
​
//实现交换糖果的数量
void swap(vector<int>& candy) {
    int size = candy.size();
    vector<int>oldNum(size);
    for (int i = 0; i < candy.size(); i++) {
        oldNum[i] = candy[i] / 2;
    }
    //再把oldNum中的值赋给candyNUm中的各位中的下一位
    for (int i = 0; i < size; i++) {
            candy[i] -= oldNum[i];
            candy[(i + 1)%size] += oldNum[i];
​
        }
    //再检查一遍candy数组,若有奇数值,则加1
    for (int i = 0; i < size; i++) {
        if (candy[i] % 2 == 1) {
            candy[i] ++;
        }
    }
}
​
​
int main() {
    int N;
    while (scanf("%d", &N)!= EOF) {
        if (N == 0) {
            break;
        }
​
        vector<int> candy(N);
​
        //为candy数组赋值
        for (int i = 0; i <N; i++) {
            scanf("%d", &candy[i]);
        }
        //循环的次数;
        int count = 0;
        //循环结束的标志:所有学生的糖果树相等
        while (checkCandy(candy) == false) {
            //交换糖果
            swap(candy);
            count++;
        }
​
        //最后输出总轮数和每个人的剩下的糖果的数量
        printf("%d %d\n", count,candy[0]);
    }
    return 0;
}
​

代码分析:

1.将动态数组作为某个函数的参数时,我们可以使用值传递也可以使用引用

为了节约脑细胞,我们在所有情况下都使用引用。

2.为了实现循环的效果,在把oldNum中的值赋给candyNUm中的各位中的下一位这个逻辑中,我们使用以下的逻辑:

其中注意candy[i]要先减掉oldNum[i];且要用 candy[(i + 1)%size]加上oldNum[i];

 for (int i = 0; i < size; i++) {
            candy[i] -= oldNum[i];
            candy[(i + 1)%size] += oldNum[i];

        }

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

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

相关文章

unity学习59: 滑动条 和 滚动条 滚动区域

目录 1 滑动条 slider 1.1 创建slider 1.2 构成的子物体 1.2.1 找到 某个UI的 方法 1.3 构成的component&#xff0c;主体就是 slider 2 核心属性 2.1 value 2.2 direction 3 作用 3.1 由于是fill back 可以实现血条效果 3.2 可以取得 slider.value 数值 1 滑动条…

基于vue框架的游戏博客网站设计iw282(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,博客信息,资源共享,游戏视频,游戏照片 开题报告内容 基于FlaskVue框架的游戏博客网站设计开题报告 一、项目背景与意义 随着互联网技术的飞速发展和游戏产业的不断壮大&#xff0c;游戏玩家对游戏资讯、攻略、评测等内容的需求日…

UWB人员定位:精准、高效、安全的智能管理解决方案

在现代企业管理、工业生产、安全监测等领域&#xff0c;UWB&#xff08;超宽带&#xff09;人员定位系统正逐步成为高精度定位技术的首选。相较于传统的GPS、Wi-Fi、蓝牙等定位方式&#xff0c;UWB具备厘米级高精度、低延迟、高安全性、抗干扰强等突出优势&#xff0c;能够实现…

在ubuntu 24.04.2 通过 Kubeadm 安装 Kubernetes v1.31.6

文章目录 1. 简介2. 准备3. 配置 containerd4. kubeadm 安装集群5. 安装网络 calico 插件 1. 简介 本指南介绍了如何在 Ubuntu 24.04.2 LTS 上安装和配置 Kubernetes 1.31.6 集群&#xff0c;包括容器运行时 containerd 的安装与配置&#xff0c;以及使用 kubeadm 进行集群初始…

DO-254航空标准飞行器电机控制器设计注意事项

DO-254航空标准飞行器电机控制器设计注意事项 1.核心要求1.1 设计保证等级(DAL)划分1.2生命周期管理1.3验证与确认2.电机控制器硬件设计的关键注意事项2.1需求管理与可追溯性2.2冗余与容错设计2.3验证与确认策略2.4元器件选型与管理2.5环境适应性设计2.6文档与配置管理3.应用…

解决Deepseek“服务器繁忙,请稍后再试”问题,基于硅基流动和chatbox的解决方案

文章目录 前言操作步骤步骤1&#xff1a;注册账号步骤2&#xff1a;在线体验步骤3&#xff1a;获取API密钥步骤4&#xff1a;安装chatbox步骤5&#xff1a;chatbox设置 价格方面 前言 最近在使用DeepSeek时&#xff0c;开启深度思考功能后&#xff0c;频繁遇到“服务器繁忙&am…

python-leetcode-使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 解法 1&#xff1a;动态规划&#xff08;O(n) 时间&#xff0c;O(n) 空间&#xff09; class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:n len(cost)dp [0] * (n 1) # 额外多…

ChatGPT 提示词框架

作为一个资深安卓开发工程师&#xff0c;我们在日常开发中经常会用到 ChatGPT 来提升开发效率&#xff0c;比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力&#xff0c;我们需要掌握一些提示词&#xff08;Prompt&#xff09;的编写技巧&#xff0c;并…

【构建工具】Gradle 8中Android BuildConfig的变化与开启方法

随着Gradle 8的发布&#xff0c;Android开发者需要注意一个重要变化&#xff1a;BuildConfig类的生成现在默认被关闭了&#xff01;&#xff01;&#xff01;。这个变化可能会影响许多依赖于BuildConfig的项目&#xff08;别问&#xff0c;问就是我也被影响了&#xff0c;多好用…

性能测试测试策略制定|知名软件测评机构经验分享

随着互联网产品的普及&#xff0c;产品面对的用户量级也越来越大&#xff0c;能抗住指数级增长的瞬间访问量以及交易量是保障购物体验是否顺畅的至关重要的一环&#xff0c;而我们的性能测试恰恰也是为此而存在的。 性能测试是什么呢&#xff1f;性能测试要怎么测呢&#xff1f…

SAP-ABAP:SAP数据库视图(Database View)详解-创建

在SAP系统中&#xff0c;数据库视图&#xff08;Database View&#xff09; 是一种基于物理数据库表的虚拟表&#xff0c;通过关联多个表&#xff08;使用INNER JOIN&#xff09;生成逻辑数据集。它存储在数据库中&#xff0c;但本身不存储数据&#xff0c;仅通过查询动态生成结…

BUG: 解决新版本SpringBoot3.4.3在创建项目时勾选lombok但无法使用的问题

前言 当使用Spring Boot 3.4.3创建新项目时&#xff0c;即使正确勾选Lombok依赖&#xff0c;编译时仍出现找不到符号的错误&#xff0c;但代码中Lombok注解的使用完全正确。 原因 Spring Boot 3.4.3在自动生成的pom.xml中新增了maven-compiler-plugin的配置&#xff0c;该插件…

登录次数限制

文章目录 一、应用场景与设计目的1. 应用场景2. 设计目的 二、功能设计1. 登录限制规则2. 解锁机制3. 适用维度 三、技术实现1. 数据存储2. 逻辑流程3. 实现代码示例4. 动态锁定时间 四、安全增强与扩展1. 防止用户名枚举2. 加入验证码3. 监控与报警4. 分布式支持 五、设计思考…

CMU15445(2023fall) Project #2 - Extendible Hash Index 匠心分析

胡未灭&#xff0c;鬓已秋&#xff0c;泪空流 此生谁料 心在天山 身老沧州 ——诉衷情 完整代码见&#xff1a; SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering determinati…

【Java面试】JVM汇总

目录 1.JVM为什么能跨平台&#xff1f; 2.JVM由哪些部分构成&#xff1f;每个部分起到什么作用&#xff1f; 3.什么是双亲委派&#xff1f;双亲委派的两大作用是什么&#xff1f; 举个例子&#x1f330;&#xff1a; 为什么要有这种“家族规矩”&#xff1f; 破坏双亲委派…

【SpringBoot】Spring 一站式解决方案:融合统一返回结果、异常处理与适配器模式

前言 ???本期讲解关于统一功能处理的详细介绍~~~ ??感兴趣的小伙伴看一看小编主页&#xff1a;-CSDN博客 ?? 你的点赞就是小编不断更新的最大动力 ??那么废话不多说直接开整吧~~ 目录 ???1.适配器模式? ??1.1适配器模式定义 ?编辑 ??1.2适配器模式角…

STM32基础篇(三)------滴答定时器

滴答定时器简介 SysTick定时器&#xff08;STK&#xff09; 处理器有一个24位系统定时器SysTick&#xff0c;它从重新加载值倒计时到零&#xff0c;在下一个时钟沿重新加载&#xff08;换行&#xff09;LOAD寄存器中的值&#xff0c;然后对后续时钟倒计时。当处理器暂停调试时&…

Sublime Text4安装、汉化

-------------2025-02-22可用---------------------- 官方网址下载&#xff1a;https://www.sublimetext.com 打开https://hexed.it 点击打开文件找到软件安装目录下的 ctrlf 查找 8079 0500 0f94 c2右边启用替换替换为:c641 0501 b200 90点击替换按钮 替换完成后 另存为本地…

CameraX学习1-关于预览、拍照、对焦

关于CameraX是否可以打开多种特殊摄像头&#xff0c;例如广角、长焦、景深等等 虽然CameraSelector只简单定义了前置后置&#xff0c;没具体指明摄像头&#xff0c;但是可以跟Camera2 API的CameraCharacteristics结合使用&#xff0c;获取对应的cameraid&#xff0c;再传入Came…

【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…