华为C++研发工程师编程题 ACM模式输入输出|| 1.汽水瓶,2.明明的随机数,3.进制转换

C++ ACM输入输出

  • 1.汽水瓶
    • 题目描述
    • 思路
    • 代码如下
  • 2.明明的随机数
    • 题目描述
    • 思路:
    • 代码如下:
  • 3.进制转换
    • 题目描述
    • 思路:
    • 代码如下

题目链接: 华为研发工程师编程题

1.汽水瓶

题目描述

某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。

小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。

数据范围:输入的正整数满足 1≤n≤100

注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32M,其他语言64M

输入描述:

输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0
表示输入结束,你的程序不应当处理这一行。

输出描述:

对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

示例1
输入例子:
3
10
81
0
输出例子:
1
5
40

例子说明
样例 1 解释:
用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换
样例 2解释:
用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板

思路

f(1) = 0, f(2) = 1 f(3) = 1
f(4) = f(2)+1 //4个瓶子,其中3个可以换1瓶水+1个空瓶,所以是f(2)+1
f(5) = f(3)+1 //3个瓶子换1瓶水+1个空瓶,所以是f(3)+1
… f(n) = f(n-2)+1

注意题目是以0结尾作为输入终止的条件的,所以要用while循环,当输入为0时循环终止。

代码如下

#include <iostream>
using namespace std;

int bottle_n(int n) {
    if(n == 1) return 0;
    if(n == 2) return 1;
    else {
        return bottle_n(n - 2) + 1;
    }
}
int main() {
    int n;
    cin >> n;
    while(n != 0) {
        cout << bottle_n(n) << endl;
        cin >> n;
    }
    system("pause");
    return 0;
}

在这里插入图片描述

2.明明的随机数

题目描述

明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。

数据范围: 1≤n≤1000 ,输入的数字大小满足 1≤val≤500

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32M,其他语言64M

输入描述:

第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。

输出描述:

输出多行,表示输入数据处理后的结果

示例1
输入例子:
3
2
2
1
输出例子:
1
2
例子说明:
输入解释:
第一个数字是3,也即这个小样例的N=3,说明用计算机生成了3个1到500之间的随机整数,接下来每行一个随机数字,共3行,也即这3个随机数字为:
2
2
1
所以样例的输出为:
1
2

思路:

暴力解法要用两个循环,第一个循环去重,第二个循环排序。

第二种解法:

先用while循环读出数组大小num,构建一个略大于给定数据容量的数组,实

际上是起一个映射的作用,对于输入的data,映射为1,这样其实就起到一

去重的作用,(类似于c++有专门的容器unordered_map),后面连排序

都省了,只需要用一个for循环遍历元素,找到元素值为1对应的data,代表输入

的数值。

代码如下:

#include <iostream>
using namespace std;
#include <vector>

int main() {
    int num;
    //vector<int> nums(n);
    while(cin >> num) {
        int data;
        vector<int> a(1005, 0);
        for(int i = 0; i < num; i++) {
            cin >> data;
            a[data] = 1;
        }
        for(int j = 0; j < 1005; j++) {
            if(a[j] != 0) {
                cout << j << endl;
            }
        }
    }
    system("pause");
    return 0;
}

在这里插入图片描述
测试例已通过。

3.进制转换

题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在 1≤n≤2^31 − 1

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32M,其他语言64M

输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入例子: 0xAA
输出例子: 170

思路:

用一个字符串记录原始16进制数据,从最右面开始读取,读到的每位数据分两种情况:

  1. 0-9的:字符0的ascii码是48,所以读到字符后减去48就是原来的数据;
  2. A-F的:字符A的ascii码是65,要减去10,所以最后读到字符减去55就是原来的数据;

得到每位数据后用pow函数(要调用cmath库)来做幂运算

代码如下

#include <iostream>
using namespace std;
#include <string>
#include <cmath>

void fun(string s) {
    int len = s.length();
    int sum = 0;
    for(int i = len-1; i > 0; i--) {
        if(s[i] >= '0' && s[i] <= '9') {
            sum += (s[i] - 48) * pow(16, len-i-1);
        }
        else if(s[i] >= 'A' && s[i] <= 'F') {
            sum += (s[i] - 55) * pow(16, len-i-1);
        }
    }
    cout << sum << endl;
}
int main() {
    string s;
    while(cin >> s) {
        fun(s);
    }
    system("pause");
    return 0;
}

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

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

相关文章

完整数据分析体系概述

一、建设的出发点 满足业务需求&#xff0c;是建设数据分析体系的出发点&#xff0c;也是最终目的和最高要求。要注意的是&#xff0c;“业务需求”并没有统一的标准。不同部门&#xff0c;不同身份的人&#xff0c;需求是不一样的。从大的方面看&#xff0c;可以分作三个层级…

云计算服务安全评估办法

云计算服务安全评估办法 2019-07-22 14:46 来源&#xff1a; 网信办网站【字体&#xff1a;大 中 小】打印 国家互联网信息办公室 国家发展和改革委员会 工业和信息化部 财政部关于发布《云计算服务安全评估办法》的公告 2019年 第2号 为提高党政机关、关键信息基础设施运营者…

云原生CAx软件: HTTP基础知识汇总

随着云原生(Cloud Native)的兴起&#xff0c;面向服务架构(Service-Oriented Architecture&#xff0c;SOA)、微服务(Microservice)、容器(Container)等相关概念与技术正在逐渐影响CAx(CAD/CAE/CAM)软件的架构设计与开发。 在云原生CAx软件中&#xff0c;首先需要把系统按照功…

六、CANdelaStudio入门-通信参数编辑

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的通信参数编辑,欢迎各位朋友订阅、评论,…

heic格式转化jpg的3种好用方法

如果你是使用iOS手机的用户&#xff0c;那么一定对HEIC格式不陌生。虽然HEIC格式可以保存原始图像质量&#xff0c;但它只能在苹果手机或Mac电脑上打开。如果我们想要在安卓或Windows系统上打开&#xff0c;就需要使用转换软件将HEIC格式转换成常用的JPG格式。HEIC 是一种新型的…

H.264/AVC加密----选择加密

文献学习&#xff1a; 《Data Hiding in Encrypted H.264/AVC Video Streams by Codeword Substitution》 期刊&#xff1a;IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY 简介 通过分析H.264/AVC编解码器的特性&#xff0c;提出了三个敏感部分(IPM、MVD和残差系…

深度学习-第R2周——LSTM火灾温度预测

深度学习-第R2周——LSTM火灾温度预测 深度学习-第R2周——LSTM火灾温度预测一、前言二、我的环境三、前期工作1、导入数据集2、数据可视化 四、构建数据集1、设置x,y2、归一化3、划分数据集 五、构建模型六、模型训练1、编译2、训练 七、评估1、loss图2、预测 深度学习-第R2周…

区间DP (Java) 解析/模板/案例

一. 区间DP简单介绍 区间DP&#xff0c;是经常会用到的、解决区间问题的一种方法&#xff0c;经常以动态规划&#xff08;dfs/记忆化搜索&#xff09;的形式展现&#xff0c;最核心的思想就是枚举区间&#xff08;枚举端点&#xff09;&#xff0c;寻找切割点&#xff0c;处理因…

并发编程基石:管程

大家好&#xff0c;我是易安&#xff01; 如果有人问我学习并发并发编程&#xff0c;最核心的技术点是什么&#xff0c;我一定会告诉他&#xff0c;管程技术。Java语言在1.5之前&#xff0c;提供的唯一的并发原语就是管程&#xff0c;而且1.5之后提供的SDK并发包&#xff0c;也…

手写Spring框架---IOC容器实现

目录 框架具备的最基本功能 实现容器前奏 创建注解 提取标记对象 extractPacakgeClass里面需要完成的事情 获取项目类加载器的目的 为什么不让用户传入绝对路径 类加载器ClassLoader 统一资源定位符URL ClassUtil提取标记类 获取包下类集合 装载目标类的集合 获取…

【Unity入门】21.预制体

【Unity入门】预制体 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;预制体制作 &#xff08;1&#xff09;什么是预制体 这一章节的博客&#xff0c;我们将会学习一个预制体的概念。什么是…

【C语言】struct结构体

文章目录 一. 结构体简述二. 结构体的声明和定义1、简单地声明一个结构体和定义结构体变量2、声明结构体的同时也定义结构体变量3、匿名结构体4、配合typedef&#xff0c;声明结构体的同时为结构体取别名5、在声明匿名结构体时&#xff0c;使用typedef给这个匿名结构体取别名 三…

中国的chatGpt-中国chatGPT软件

chatGPT中文免费版 您是否在寻找一款免费且实用的聊天软件来更好地与别人交流&#xff1f;那么&#xff0c;“chatGPT中文免费版”将是您的不二选择&#xff01; 作为一款由 OpenAI 训练的大型语言模型&#xff0c;chatGPT 中文免费版可以让您轻松地与其他人进行交流&#xf…

( 栈和队列) 155. 最小栈 ——【Leetcode每日一题】

❓155. 最小栈 难度&#xff1a;中等 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。…

计算机网络【2】 子网掩码

学习大佬记下的笔记 https://zhuanlan.zhihu.com/p/163119376 "子网"掩码&#xff0c;顾名思义&#xff0c;它就是拿来划分子网的&#xff0c;更准确的说&#xff0c;划分子网的同时&#xff0c;还能通过它知道主机在子网里面的具体ip的具体地址。 子网掩码只有一个…

Pytest接口自动化测试实战演练

结合单元测试框架pytest数据驱动模型allure 目录 api&#xff1a; 存储测试接口conftest.py :设置前置操作目前前置操作&#xff1a;1、获取token并传入headers&#xff0c;2、获取命令行参数给到环境变量,指定运行环境commmon&#xff1a;存储封装的公共方法connect_mysql.p…

【计算机是怎么跑起来的】基础:计算机三大原则

【计算机是怎么跑起来的】基础&#xff1a;计算机三大原则 计算机的三个根本性基础1.计算机是执行输入&#xff0c;运算&#xff0c;输出的机器输入&#xff0c;运算&#xff0c;输出 2. 软件是指令和数据的集合指令数据 3. 计算机的处理方式有时与人们的思维习惯不同对计算机来…

如何做好采购计划和库存管理?

“销售计划不专业且不稳定”“准确性低” “目前只按照过往销量和采购周期做安全库存&#xff0c;但欠货和滞销依然严重” 题主的问题其实蛮有代表性的&#xff0c; 也是传统采购和库存管理常常面临的问题&#xff1a; ① 前后方协作困难 采购/销售/财务工作相互独立&#x…

NetXpert XG2帮您解决“布线安装与维护”难题

在传输大量数据时&#xff0c;光纤变得越来越重要&#xff0c;而铜缆在未来也将继续发挥重要作用&#xff0c;因此我们不仅要比较两种类型布线的优缺点&#xff0c;还要探究光纤传输中的错误来源。 测试光缆传输损耗的准确性对于故障排除至关重要&#xff0c;特别是在光纤情况下…

2023五一数学建模竞赛(五一赛)选题建议

提示&#xff1a;DS C君认为的难度&#xff1a;C<A<B&#xff0c;开放度&#xff1a;B<A<C 。 A题&#xff1a;无人机定点投放问题 这道题是传统的物理类题目&#xff0c;基本每次建模竞赛都会有。由于这道题目并未给明数据&#xff0c;所以数据获取和搜集资料是…