497 蓝桥杯 成绩分析 简单

497 蓝桥杯 成绩分析 简单

//C++风格解法1,*max_element()与*min_element()求最值
//时间复杂度O(n),通过率100%
#include <bits/stdc++.h>
using namespace std;using ll = long long;
const int N = 1e4 + 10;
int a[N];int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n;cin >> n;for(int i = 1; i <= n; ++i)cin >> a[i];cout << *max_element(a + 1, a + 1 + n) << '\n';cout << *min_element(a + 1, a + 1 + n) << '\n';ll sum = 0;for(int i = 1; i <= n; ++i)sum += a[i];cout << fixed << setprecision(2) << 1.0 * sum / n <<'\n';return 0;
}

*max_element()与*min_element()分别用来求最大元素和最小元素的值,

如果不加 * 获取的是地址。

虽然集合作为二叉树实现, 但是时间复杂度O(n),n为数组大小(由传入的参数决定)

在集合或其他有序容器上使用相同的比较函数,函数是线性的,触及每个元素,因为在恒定时间内使用.rbegin()

如果使用不同的比较函数,则无法保证顺序一致,但同样必须触及每个元素,并且至少是线性的。

接收参数:容器的首尾地址(迭代器)(可以是一个区间)

返回:最值元素的值

C++ primer (中文版第四版)第273页

9.3.2 begin和end成员

        begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,

        如下所示。这两个迭代器通常用于标记包含容器中所有元素的迭代范围。

        

        c.begin() 返回一个迭代器,它指向容器c的第一个元素

        c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置

        c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素

        c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

       

        上述每个操作都有两个不同的版本:一个是const成员,另一个是非const成员。这些操作返回什么类型取决于容器是否为const。如果容器不是const,则这些操作返回iterator或reverse_iterator类型。如果容器是const,则其返回类型要加上const_前缀,也就是const_iterator和const_reverse_iterator类型。

  • begin();end()正序迭代器
  • cbegin();cend() 返回 const 的begin();end()
  • rbegin();rend() 逆序迭代器
  • crbegin();crend() 返回 const 的 rbegin();rend()

用fixed,一个manipulator,消除浮点数的科学计数法。

只要出现了fixed,后面都按fixed输出。

fixed与setprecision(n)连用可以控制小数点后的位数,可以理解为定点数记数法。

没有fixed,就是浮点数记数法,控制的就是有效数字的位数(包括小数点前的)

fixed是一个计算机专业术语,指向托管变量的指针并在 statement 执行期间“钉住”该变量。
fixed流操作符,它表示浮点输出应该以固定点或小数点表示法显示。

//C++风格解法2,打擂台算法,max()、min()通过率100%
#include <bits/stdc++.h>
using namespace std;const int N = 1e4 + 10;
int a[N];int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n;cin >> n;for(int i = 1; i <= n; ++i)cin >> a[i];int mx = a[1], mi = a[1];for(int i = 1; i <= n ; ++i){mx = max(mx, a[i]);mi = min(mi, a[i]);}cout << mx << '\n' << mi << '\n';int sum = 0;for(int i = 1; i <= n; ++i)sum += a[i];cout << fixed << setprecision(2) << 1.0 * sum / n <<'\n';//1.0 * sum / n 强制转化为浮点数return 0;
}

min(a,b)返回a和b中较小的那个值,只能传入两个值,或传入一个列表。

min(1,2) = 1

min({1,2,3,4}) = 1

同理可得max(a,b)的含义和表示,时间复杂度为O(1),传入参数为数组时时间复杂度为O(n),

n为数组大小。

 C/C++中“/”本身带有取整的含义,n*1/i,即意味着整数除以整数,结果取整;n*1.0/i即意味着浮点数除以整数,结果会强制转换为浮点数。

//C风格解法3,打擂台算法,通过率100%
#include <stdio.h>
#include <stdlib.h>int main(){int n,i,a[10001];float aver = 0;int max = 0,min = 100;scanf("%d", &n);for(i = 0; i < n; i++){scanf("%d", &a[i]);aver += a[i];if(a[i] > max)max = a[i];if(a[i] < min)min = a[i];}aver = aver / n;printf("%d\n %d\n %.2f",max,min,aver);return 0;
}

在C语言中,printf() 函数中的 %5.2f 是一个格式说明符,用于格式化浮点数的输出。

  • %:格式说明符的起始标志。

  • 5:字段宽度,表示输出的最小字符数,包括空格(可能没有)、整数部分、小数点和小数部分。它指定了输出的总宽度为5个字符。

  • .:小数点用来分隔整数部分和小数部分。

  • 2:精度,表示小数部分的位数。指定小数部分保留2位。

  • f:表示要格式化的数据类型是浮点数。

  • 浮点数 3.14159 并使用 %5.2f 进行格式化输出,它将输出为 "空格3.14",总共占据5个字符的宽度,其中有一个空格字符,一个整数,一个小数点字符和两个小数。而且没有负号,所以在左侧输出一个空格占位,即右对齐输出。

  • 浮点数3.5,使用%-5.2f进行格式化输出,那么就是输出"3.50空格",3.50总共有4位,总共占据5个字符的宽度,而且有负号,所以在右侧输出一个空格占位,即左对齐输出。

  • 没有负号右对齐,位数不足,左边补齐空格,满足或超过位数,原样输出。

  • 有负号左对齐,位数不足,右边补空格。

  • printf("%-4d",20); 输出"20空格空格"(左对齐,右边补2个空格),printf("%-4d",12345); 输出:12345(原样输出)

  • printf("%4d",20); 输出"空格空格20"(右对齐,左边补2个空格),printf("%2d",12345); 输出:12345(原样输出)

reference:

C++max_element()min_element()函数简介 - 知乎 (zhihu.com)

C++ max_element()的使用-CSDN博客

c++ - STL max_element 的复杂度 - IT工具网 (coder.work)

反向迭代器(rbegin,rend)-CSDN博客

C++ 容器中 begin()、cbegin()、rbegin()、crbegin-CSDN博客

详解C++中fixed,setprecision(),setw()的用法_c++ fixed-CSDN博客

如何深刻理解IEEE浮点数的表示(IEEE floating-point representation)_ieee floating point-CSDN博客
C++003-C++变量和数据类型2_c++输入正方形的边长m和n,计算阴影部分的面积-CSDN博客
C语言基础;打擂台算法_打擂台算法流程图-CSDN博客
sum=sum+n*1.0/i;与 sum=sum+n*1/i;为什么输出结果不一样? - 知乎 (zhihu.com)
C语言中printf输出特殊字符(“%d“或者“\n“)_c语言中d%\n是什么意思-CSDN博客
在C语言中,printf("max is %d\n",max)和printf("%d",max)有区别吗?_百度知道 (baidu.com)

C语言中输出格式%.2f和%1.2f有什么不同? - 知乎 (zhihu.com)

c语言printf()函数中的%5.2f是什么意思?_百度知道 (baidu.com)

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

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

相关文章

线扫相机品牌汇总(国外+国内)

线扫相机品牌汇总(国外+国内) 行者 ​ 热爱生活 22 人赞同了该文章 线扫相机也叫做线阵相机,和面阵相机一样,都是重要的工业相机。 线扫相机正如其名字那样,拍照时像扫描一样,相机和被拍照物体有相对匀速运动。 Perhaps the most common example of line scan imagin…

谷粒商城项目|微服务架构的一些与思考解决跨域问题

1.微服务架构的组成每部分的作用 2.还有其他的微服务架构模式吗 3.微服务服务交互的方式 1&#xff09;grpc 2&#xff09;rest api 4.微服务网关与API网关&#xff1f; 5.注册中心比较&#xff08;Nacos与Eureka&#xff09; Nacos Nacos 是阿里巴巴开源的项目&#xff0c;N…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理

一、准备工作 1.明确需求 根据产品经理绘制的页面原型&#xff0c;对部门和员工进行相应的增删改查操作。 2.环境搭建 将使用相同配置的不同项目作为Module放入同一Project&#xff0c;以提高相同配置的复用性。 准备数据库表&#xff08;dept, emp&#xff09; 资料中包含…

Objective-C中使用STL标准库Queue队列

1.修改.m文件为mm 2.导入queue头 #include<queue> 3.使用&#xff1a; #import <Foundation/Foundation.h> #include <cmath> #include <queue> using namespace std;int main(int argc, const char * argv[]) {autoreleasepool {NSLog("C标准…

POSIX API与网络协议栈

本文介绍linux中与tcp网络通信相关的POSIX API&#xff0c;在每次调用的时候&#xff0c;网络协议栈会进行的操作与记录。 POSIX API Posix API&#xff0c;提供了统一的接口&#xff0c;使程序能得以在不同的系统上运行。简单来说不同的操作系统进行同一个活动&#xff0c;比…

【金猿案例展】黑龙江省粮食质量安全监测和技术中心——荣联助力黑龙江粮食仓储智能化升级...

‍ 荣联科技集团案例 本项目案例由荣联科技集团投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新服务企业榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 近年来&#xff0c;国家粮食和物资储备信息化工作取得了长足发展&#xff0c;但与新时…

IO进程线程 day7 进程间通信

1.使用消息队列完成两个进程之间相互通信 2.信号通信相关代码的重新实现 &#xff08;1&#xff09;signal函数的实例 #include <head.h>//定义信号处理函数 void handler(int signum) {if(signum SIGINT) //表明要处理2号信号{printf("用户按下了ctrl c键…

将Llama2上下文长度扩展100倍;效率更高的SeTformer;LLM准确度基本不变加速1.56×;FreeTalker

本文首发于公众号&#xff1a;机器感知 将Llama2上下文长度扩展100倍&#xff1b;效率更高的SeTformer&#xff1b;LLM准确度基本不变加速1.56&#xff1b;FreeTalker Latte: Latent Diffusion Transformer for Video Generation 本文使用Latent Diffusion Transformer(Latte…

pod探针2:

就绪探针演示&#xff1a; 演示探针失败 存活探针&#xff08;livenessProde&#xff09;&#xff1a;探测容器是否是否运行正常&#xff0c;如果探测失败则kubelet杀掉容器&#xff08;不是Pod&#xff09;&#xff0c;容器会根据重启策略决定是否重启 就绪探针&#xff08;re…

tcp/ip协议2实现的插图,数据结构6 (24 - 章)

(142) 142 二四1 TCP传输控制协议 tcpstat统计量与tcp 函数调用链 (143) 143 二四2 TCP传输控制协议 宏定义与常量值–上 (144) 144 二四3 TCP传输控制协议 宏定义与常量值–下 (145) 145 二四4 TCP传输控制协议 结构tcphdr,tcpiphdr (146) 146 二四5 TCP传输控制协议 结构 tcp…

【SkyWant.[2304]】路由器操作系统,移动【Netkeeper】使用教程校园网

目录 步骤一&#xff1a;正确连接网线&#xff0c;插电开机正确连接网线&#xff1a; 认识系统灯&#xff1a; 插电开机&#xff1a; 步骤二&#xff1a;开机之后&#xff0c;系统的基本设置 1.进入设置界面&#xff1a; 2.设置辅助热点wifi&#xff1a; 3.设置日常…

互斥、自旋、读写锁的应用场景

互斥、自旋、读写锁的应用场景 锁&#x1f512;1、互斥锁、自旋锁2、读写锁&#xff1a;读写的优先级3、乐观锁和悲观锁总结&#xff1a; 锁&#x1f512; ​ 多线程访问共享资源的生活&#xff0c;避免不了资源竞争而导致错乱的问题&#xff0c;所以我们通常为了解决这一问题…

竞赛保研 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…

【开源GPT项目 - 在问】让知识无界,智能触手可及

Chatanywhere: chatAnywhere 在问 | 让知识无界&#xff0c;智能触手可及 项目简介 这是一个免费的在线聊天工具&#xff0c;旨在让用户更方便地享受科技带来的便利。用户可以使用我们的工具来获取答案、寻求建议、进行翻译和计算等等。这是由一位个人开发者创建的&#xff…

thinkadmin安装步骤

一,先cmd运行安装命令 ### 创建项目( 需要在英文目录下面执行 ) composer create-project zoujingli/thinkadmin二,在confing中的database.php配置数据库 三,将仓库的data复制到app目录下 https://gitee.com/zoujingli/think-plugs-data 四,在cmd运行命令安装数据库 //…

计算机网络 - 路由器查表过程模拟 C++(2024)

1.题目描述 参考计算机网络教材 140 页 4.3 节内容&#xff0c;编程模拟路由器查找路由表的过程&#xff0c;用&#xff08;目的地址 掩码 下一跳&#xff09; 的 IP 路由表以及目的地址作为输入&#xff0c;为目的地址查找路由表&#xff0c;找出正确的下一跳并输出结果。 1.…

使用SpirngBoot时部分编译报错解决方案:

1. 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图&#xff1a; 解决方案&#xff1a; 找到springboot的java版本看是多少版本&#xff0c;springboot 3.0以上的版本需要最低JDK17的版本&#xff0c;所以查看你自己…

LeetCode 2397. 被列覆盖的最多行数:二进制枚举

【LetMeFly】2397.被列覆盖的最多行数&#xff1a;二进制枚举 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-rows-covered-by-columns/ 给你一个下标从 0 开始的 m x n 二进制矩阵 mat 和一个整数 cols &#xff0c;表示你需要选出的列数。 如果一行中&am…

Transformer从菜鸟到新手(五)

引言 上篇文章我们在单卡上完成了完整的训练过程。 从本文开始介绍模型训练/推理上的一些优化技巧&#xff0c;本文主要介绍多卡并行训练。 下篇文章将介绍大模型推理常用的缓存技术。 多卡训练 第一个要介绍的是利用多GPU优化&#xff0c;因为在单卡上训练实在是太慢。这…

ip协议历史

今天的互联网&#xff0c;是万维网&#xff08;WWW&#xff09;一家独大。而在上世纪七八十年代&#xff0c;人们刚开始尝试网络连接时&#xff0c;那时出现了计算机科学研究网络、ALOHA 网、因时网、阿帕网等不同类型的网络&#xff0c;这些网络之间互相通信是个难题。 于是&…