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)

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

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

相关文章

不同像平面坐标系下的Brown畸变系数互转

不同像平面坐标系下Brown畸变系数转换 记 u , v u,v u,v为像素为单位的坐标&#xff0c;f为焦距&#xff0c;单位也是像素。 记 x , y x,y x,y为理想坐标。本文推导两种情况下的Brown畸变系数转换关系&#xff1a; 相同坐标系定义、不同的坐标单位&#xff08;像素坐标与归一…

JavaWeb——后端案例

五、案例 1. 开发规范—Restful REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表述性状态转换&#xff0c;是一种软件架构风格 注&#xff1a; REST是风格&#xff0c;是约定方式&#xff0c;不是规定&#xff0c;可以打破描述模块的功能通常使…

chatglm部署问题

问题&#xff1a; ModuleNotFoundError: No module named ‘transformers_modules.’ 解决方法&#xff1a; 卸载重装 pip uninstall transformerspip install transformers -i https://mirror.baidu.com/pypi/simple

java内存屏障

参考&#xff1a;https://blog.csdn.net/weixin_73077810/article/details/132804522 内存屏障主要用于解决线程的可见性、有序性问题 代码案例&#xff1a; ReentrantLock保证可见性的原理 在 lock.lock() 和 lock.unlock() 时&#xff0c;都会操作 AbstractQueuedSy…

Linux命令入门及ls命令

由于大家第一次接触到Linux命令&#xff0c;故此篇会详细讲述什么是命令&#xff0c;什么又是命令行&#xff1f;Linux命令的基础结构&#xff0c;什么是工作目录&#xff0c;什么又是HOME目录&#xff1f;并且带大家熟悉ls命令的基础使用。 1.命令和命令行 命令行&#xff1a…

mybatisPlus CodeGenerator 代码生成

在 test 目录下新建 CodeGenerator 类&#xff0c;用于 mybatis-plus 自动生成 java 代码 package com.edward;import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplu…

Git 实战指南:常用指令精要手册(持续更新)

&#x1f451;专栏内容&#xff1a;Git⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、Git 安装过程1、Windows 下安装2、Cent os 下安装3、Ubuntu 下安装 二、配置本地仓库1、 初始化 Git 仓库2、配置 name 和 e…

数字系统课程设计与VHDL报告

获“优”&#xff0c;含实验结果视频、代码、报告&#xff0c;99.99%原创&#xff0c;配置环境太复杂不包跑通&#xff0c;要的私信。

听GPT 讲Rust源代码--compiler(30)

File: rust/compiler/rustc_const_eval/src/transform/promote_consts.rs 在Rust的编译器源代码中&#xff0c;rust/compiler/rustc_const_eval/src/transform/promote_consts.rs文件的作用是执行常量传播和优化的转换过程。 该文件中的PromoteTemps结构体是一个转换器&#xf…

【教学类-45-02】X-Y之间的三连减题(a-b-c=)

作品展示&#xff1a; 背景需求&#xff1a; 【教学类-45-01】X-Y之间的三连加题(abc)-CSDN博客文章浏览阅读5次。【教学类-45-01】X-Y之间的三连加题(abc)https://blog.csdn.net/reasonsummer/article/details/135436915 有了三连加怎么能没有三连减&#xff0c;修改参数&am…

SpringIOC之support模块FileSystemXmlApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

应用OpenCV绘制箭头

绘制箭头函数 方法&#xff1a;函数cv2.arrowedLine( ) 语法格式&#xff1a;cv2.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) 参数说明&#xff1a; img&#xff1a;要画的直线所在的图像&#xff0c;也称为画布。。 pt1&#x…

BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【1】

预训练模型:A pre-trained model is a saved network that was previously trained on a large dataset, typically on a large-scale image-classification task. You either use the pretrained model as is or use transfer learning to customize this model to a given t…

查找的数据结构实验报告(哈希表)

目录 一、实验目的&#xff1a; 二、实验内容&#xff08;实验题目与说明&#xff09; 三、算法设计&#xff08;核心代码或全部代码&#xff09; 四、运行与测试&#xff08;测试数据和实验结果分析&#xff09; 五、总结与心得 一、实验目的&#xff1a; (1)理解查找表…

windows 查看所有端口占用情况

winR&#xff0c;调出cmd窗口&#xff1a; 输入命令 netstat -ano 内容太多&#xff0c;显示不全&#xff0c;怎么办? 输入下面命令 netstat -ano > d:\1.log 在d盘根目录下就产生了 输出文件 打开可以看到如下内容 活动连接协议 本地地址 外部地址 状…

小家电type-c接口PD诱骗

小家电Type-C接口PD诱骗&#xff1a;未来充电的便捷与安全 随着科技的不断发展&#xff0c;Type-C接口已经成为了许多小家电产品的标配。而PD&#xff08;Power Delivery&#xff09;诱骗技术&#xff0c;作为一种新兴的充电技术&#xff0c;更是为小家电产品的充电带来了前所…

密码学入门 古老的围栏密码技术

1、简述 由于隐私和安全的重要性不断增加&#xff0c;已经开发了多种加密方法和技术来保护我们的敏感数据。随着时间的推移而演变&#xff0c;从经典密码学发展到现代密码学。 在本文中&#xff0c;我们将了解一种被称为围栏密码技术的技术&#xff0c;涵盖其加密和解密过程及其…

【IC设计】移位寄存器

目录 理论讲解背景介绍什么是移位寄存器按工作模式分类verilog语法注意事项 设计实例循环移位寄存器算术双向移位寄存器5位线性反馈移位寄存器伪随机码发生器3位线性反馈移位寄存器32位线性反馈移位寄存器串行移位寄存器&#xff08;打4拍&#xff09;双向移位寄存器&#xff1…

Java研学-web操作crud

一 思路 1 组件 页面显示&#xff1a;JSP   接受用户请求&#xff1a;Servlet   和数据库交互&#xff1a;MyBatis 2 基础准备 ① 创建 web 项目&#xff0c;导入需要依赖的 jar 包,放入 web/WEB-INF/lib目录中 ② 创建数据库表 CREATE TABLE employee( id bigint(11)…

八大算法排序@归并排序(C语言版本)

目录 归并排序概念算法思想第一步第二步第三步 算法步骤代码实现代码1代码优化 时间复杂度空间复杂度特性总结 归并排序 概念 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治策略的经典排序算法。它的基本思想是将待排序的数组划分成两个子数组&#xff0c;分别对…