华为OD机考--【磁盘容量排序】
■ 题目描述
【磁盘容量排序】
磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T = 1024G,1G = 1024M,现在给定n块磁盘的容量,
请对它们按从小到大的顺序进行稳定排序,例如给定5块盘的容量,1T,20M,3G,10G6T,3M12G9M排序后的结果为20M,3G,3M12G9M,1T,10G6T。
注意单位可以重复出现,上述3M12G9M表示的容量即为3M+12G+9M,和12M12G相等。
输入描述
输入第一行包含一个整数n(2 <= n <= 100),表示磁盘的个数,接下的n行,每行一个字符串(长度大于2,小于30),表示磁盘的容量,
由一个或多个格式为mv的子串组成,其中m表示容量大小,v表示容量单位,例如20M,1T,30G,10G6T,3M12G9M。
磁盘容量m的范围为1到1024的正整数,容量单位v的范围只包含题目中提到的M,G,T三种,换算关系如题目描述。
输出描述
输出n行,表示n块磁盘容量排序后的结果。
C语言
#include <bits/stdc++.h>#define CEILING_POS(X) ((X-(int)(X)) > 0 ? (int)(X+1) : (int)(X))
#define CEILING_NEG(X) ((X-(int)(X)) < 0 ? (int)(X-1) : (int)(X))
#define CEILING(X) ( ((X) > 0) ? CEILING_POS(X) : CEILING_NEG(X) )#define MIN(a, b) ((a) < (b)) ? (a) : (b)
#define MAX(a, b) ((a) > (b)) ? (a) : (b)int cmpfunc(const void *a, const void *b) {return (*(int *) a - *(int *) b);
}int convert(char *capacity) {int size = 0;char *upper = strdup(capacity);for (int i = 0; i < strlen(upper); i++) {upper[i] = toupper(upper[i]);}char *token = strtok(upper, "MGTP");while (token != NULL) {int num = atoi(token);char unit = upper[strlen(token)];switch (unit) {case 'M':size += num;break;case 'G':size += num * 1024;break;case 'T':size += num * 1024 * 1024;break;default:break;}token = strtok(NULL, "MGTP");}return size;
}int main() {int n;scanf("%d", &n);char **capacities = (char **) malloc(n * sizeof(char *));for (int i = 0; i < n; i++) {capacities[i] = (char *) malloc((20 + 1) * sizeof(char));scanf("%s", capacities[i]);}for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {if (convert(capacities[i]) > convert(capacities[j])) {char *temp = capacities[i];capacities[i] = capacities[j];capacities[j] = temp;}}}for (int i = 0; i < n; i++) {printf("%s\n", capacities[i]);}return 0;
}
C++
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3
1G
2G
1024M
输出
1G
1024M
2G
说明
1G和1024M容量相等,稳定排序要求保留它们原来的相对位置,故1G在1024M之前。
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3
2G4M
3M2G
1T
输出
3M2G
2G4M
1T
说明
1T的容量大于2G4M,2G4M的容量大于3M2G。
#include <bits/stdc++.h>using namespace std;int getSize(string s)
{int ans = 0;int curNum = 0;for (char c: s) {if (isdigit(c)) {curNum = curNum * 10 + (c - '0');} else {if (c == 'M') {ans += curNum;} else if (c == 'G') {ans += curNum * 1024;} else if (c == 'T') {ans += curNum * 1024 * 1024;}curNum = 0;}}return ans;
}bool cmp(const string &s1, const string &s2)
{return getSize(s1) < getSize(s2);
}int main(int argc, const char *argv[])
{string s;int n;cin >> n;vector<string> size;while (n--) {cin >> s;size.push_back(s);}stable_sort(size.begin(), size.end(), cmp);for (string s: size) {cout << s << endl;}return 0;
}
相关文章:
华为OD机考--【磁盘容量排序】
■ 题目描述 【磁盘容量排序】 磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T 1024G,1G 1024M,现在给定n块磁盘的容量, 请对它们按从小到大的顺序进行稳定排序,例如给定5…...
实现弧形切角两种方式
1、css 的 radial-gradient <view style"padding:30px; background: #ccc;"><view class"navActive"></view> </view>.navActive{width: 200px;height: 40px;background-color: #fff;color: rgb(0,63,136);position: relative;bor…...
什么是强化学习?
📝什么是强化学习? 1. 📝监督,非监督,强化2. 📝非 i.i.d3. 📝强化学习基本形式4. 📝马尔可夫过程 🌟 强化学习(Reinforcement Learning,RL&#x…...
如何在Linux系统上安装cpolar内网穿透
如何在Linux系统上安装cpolar内网穿透 文章目录 如何在Linux系统上安装cpolar内网穿透 cpolar作为一款体积小巧却功能强大的内网穿透软件,不仅能够在多种环境和应用场景中发挥巨大作用,还能适应多种操作系统,应用最为广泛的Windows、Mac OS系…...
分布式软件架构——内容分发网络
内容分发网络(CDN,Content Distribution Network或Content Delivery Network) 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现…...
【HAL库】STM32CubeMX开发----STM32F407----LAN8720A----移植FreeModbus实现ModbusTCP
前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 以太网PHY层芯片为 LAN8720A,移植FreeModbus实现ModbusTCP网口通信。 具体内容参考文章:【HAL库】STM32CubeMX开发----STM32F407----ETHLAN8720ALWIP----ping通 本次移植…...
11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵
矩阵及其运算 [ a 11 ⋯ a 1 n ⋯ ⋯ ⋯ a m 1 ⋯ a m n ] \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \cdots & \cdots & \cdots \\ a_{m1} & \cdots & a_{mn} \\ \end{bmatrix} a11⋯am1⋯⋯⋯a1n⋯amn 矩阵就是二维数组&…...
AWS多账户单点登录 IAM Identity Center(AWS SSO)
需求场景 多个aws账户,登陆麻烦且不安全,SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者(IdP)(例如 Okta 或 Active Directory)中的用户。 官方文档:https://docs.aws.amazon.c…...
实验2-3-3 求奇数分之一序列前N项和 (15 分)
实验2-3-3 求奇数分之一序列前N项和 (15 分) 本题要求编写程序,计算序列 1 1/3 1/5 … 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S,精确到小数点后6位。…...
关于Android studio中的自动化测试脚本UiAutomator框架以及UiAutomatorViewer工具的使用——项目案例
加入依赖 implementation androidx.test.uiautomator:uiautomator:2.2.0创建CalcActivity页 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"...
OA办公自动化系统设计与实现(论文+源码)_kaic
摘要 随着信息化建设的日益深入,无论是政府还是企事业单位,部门之间的信息沟通与协调工作越来越重要。人们迫切需要一个能充分利用网络优势,并可以管理企业的各种重要信息的软件平台,利用该平台快速建立自己的信息网络和办公管理系…...
ansible——playbook
playbook playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 playbook本身由以下各部分组成: Tasks: 任务,即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器,当某条件…...
DDS中间件设计
OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下,这里可以看到DDS和RTPS的关系。另外缺少一部分IDL(统一描述语言),其应该是Pub、Sub的反序列化、序列化工具。 在RT…...
aws的EC2云服务器自己操作记录
亚马逊官网有免费试用1年的服务器 以下内容参考 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Debian 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是admin 1.3 登录进去后 输入用户名 admin 后进去,sudo …...
基本ACL 和高级ACL配置
基本ACL 一、要求 1.全网可达 2.在1的基础上使PC1不能访问PC2 二、思路 1.通过写静态的方式使全网可达 2.配置acl主要是拒绝源IP的访问 3.在靠近目标的地方配置acl及使用 三、操作配置 1.IP及静态配置 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 123.0.0.1 24 [r…...
【uniapp 报错 Cannot read properties of null (reading ‘offsetWidth‘)解决办法】
该错误通常是由于访问了一个空值的offsetWidth而引起的。解决方法如下: 检查代码中是否有访问了空值的情况,比如变量未初始化或者传入了空值参数或者事件未定义。 在操作元素之前,确保元素已经被正确加载。可以使用如下方法: <…...
6.s081/6.1810(Fall 2022)Lab2: System calls
文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)1.1 简单分析1.2 Hint 11.3 Hint 21.4 Hint 31.5 Hint 41.6 Hint 51.7 测试 2. Sysinfo (moderate)2.1 声明2.2 实现2.2.1 框架2.2.2 用户态与内核态交互2.2.3 计算空闲内存的大小2.2.4 计算非UNUSE…...
Git在VSCode中的使用
1.Git图像化界面进行项目初始化(git init) 2. Git图形化界面对文件进行操作 当我们创建一个文件时,该文件后面有一个U,表示文件未跟踪。 我们在管理工具中输入日志并提交代码,相当于做了两件事,将文件由“…...
【双指针_移动零_C++】
题目解析 移动零 nums [0,1,0,3,12] [1,3,12,0,0]算法原理 数组划分(数组分块) 双指针算法(利用数组下标来充当指针)使用两个指针的作用: cur指针:从左往右扫描数组,就是遍历数组。 dest指针…...
【网络安全】网络安全威胁实时地图 - 2023
文章目录 [TOC] ① 360 安全大脑360 APT全景雷达 ② 瑞星杀毒瑞星云安全瑞星网络威胁态势感知平台 ③ 比特梵德 Bitdefender④ 飞塔防火墙 FortiGuard⑤ 音墙网络 Sonicwall⑥ 捷邦 Check Point⑦ AO卡巴斯基实验室全球模拟隧道模拟 ⑧ 数字攻击地图⑨ Threatbutt互联网黑客攻击…...
Matlab R2023a绘图避坑指南:xlabel设置无效?可能是你忽略了这3个细节(多图、子图、字体)
Matlab R2023a绘图避坑指南:xlabel设置无效的3个关键细节 最近在帮实验室师弟调试Matlab代码时,发现一个有趣的现象:明明照着官方文档写的xlabel语句,运行时却总是出现各种"灵异事件"。有的标签神秘消失,有的…...
Transformer 架构细节分析1
1.Transformer总架构 Transformer 由四大部分组成: 输入部分编码器部分解码器部分输出部分 1 输入部分 包含两组嵌入层与位置编码器: 源文本嵌入层 位置编码器目标文本嵌入层 位置编码器 Input Embedding和outputEmbedding Input或ouput单条样本 …...
终极指南:三步快速打造你的英雄联盟智能助手ChampR
终极指南:三步快速打造你的英雄联盟智能助手ChampR 【免费下载链接】champr 🐶 Yet another League of Legends helper 项目地址: https://gitcode.com/gh_mirrors/ch/champr 还在为每次游戏都要手动查找出装符文而烦恼吗?还在因为版本…...
最后72小时!奇点2026大会未公开的「摘要可信度衰减曲线」数据集泄露:超大型单体应用中第17次提交即触发摘要失真
第一章:2026奇点智能技术大会:AI代码摘要 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次发布开源工具链 CodeLens-26,专为大规模AI生成代码的语义摘要与可信验证设计。其核心能力在于对多语言混合代码库(含Python、…...
破解Windows应用依赖难题:VisualCppRedist AIO一站式解决方案
破解Windows应用依赖难题:VisualCppRedist AIO一站式解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 痛点分析:为什么VC运行库成…...
2026届最火的降AI率网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,占据主流地位的降 AIGC 工具,凭借同义词替换、句式重组以及语义…...
终极指南:如何免费解锁AI编程助手高级功能
终极指南:如何免费解锁AI编程助手高级功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request …...
别再只会用默认样式了!用matplotlib的boxplot函数,5分钟定制你的专属箱线图
别再只会用默认样式了!用matplotlib的boxplot函数,5分钟定制你的专属箱线图 第一次用matplotlib画箱线图时,我盯着那个灰头土脸的方盒子看了半天——这玩意儿真的能放进报告里?后来才发现,boxplot()藏着无数宝藏参数&a…...
用RT-Thread BK7252开发板,5分钟搞定WiFi OTA升级(保姆级图文教程)
5分钟玩转BK7252开发板:WiFi OTA升级实战指南 第一次拿到BK7252开发板时,最让我惊喜的不是它丰富的板载资源,而是那个看似简单却极其实用的OTA升级功能。想象一下,当你的设备部署在难以触及的角落,或是需要频繁迭代固件…...
别再手动算频率了!用STM32F1的ADC+DMA+FFT做个简易频谱分析仪(附完整代码)
基于STM32F1的实时频谱分析仪开发实战 在嵌入式系统开发中,信号处理一直是个既基础又关键的领域。想象一下,当你需要快速了解某个未知信号的频率成分时,传统示波器只能显示时域波形,而专业频谱分析仪又价格昂贵。这时候࿰…...
