T1 神奇苹果桶 (25分) - 小米前端笔试编程题解

2024-03-28 01:12

本文主要是介绍T1 神奇苹果桶 (25分) - 小米前端笔试编程题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

alt

考试平台: 赛码

题目类型: 20道选择 + 2道编程题

考试时间: 2024-03-23 (两小时)

题目描述

小希在森林冒险的时候发现一个神奇的木桶,某些时会凭空出现一些苹果,小希很解地大家分享了这一个神奇的木桶,让大家都能享用这些大自然的溃赠。

为了方便大家来享用,小希对这一神奇的木桶的苹果数量改变进行了记录通知大家,以免在木桶空时让特意过来的人们空手而归。

小希记录下来的数量改变有3种:

  1. 苹果数是凭空增加了m个。

  2. 人们来参观时想要取走m个苹果,不过如果此时苹果数景不足m则放弃此次操作,一个都不取。

  3. 小希取走1/m的苹果进行义卖活动,如果苹果数量不能除,小希会对其进行向上取整,例如有10个苹果时,要拿走1/4,那么小希会拿走[10 / 4] = 3 个苹果。

小希记得最初时木桶中的苹果数量为0,但她忘记现在苹果数景是多少了,请你帮帮她。

输入描述

第一行一个整数n,表示会有n次操作。

第二行2n个整数 o p 1 , m 1 , o p 2 , m 2 . . . o p n , m n op_1, m_1, op_2, m_2 ... op_n, m_n op1,m1,op2,m2...opn,mn,其中 o p i op_i opi 为第 i 次的操作类型, m i m_i mi 为对应参数。意义如题面,

$ 1 \le n \le 50000,2 \le m \le 1000 $

输出描述

输出一个整数表示这n次操作之后剩余苹果数量。

样例输入

5
1 2 2 3 1 5 2 4 3 2

样例输出

1

提示

第一次操作增加2个苹果。现在剩余2个苹果。

第二次操作尝试拿3个苹果,因为不足3个放弃此次操作。现在仍然剩余2个苹果。

第三次操作增加5个苹果。现在剩余7个苹果。

第四次操作尝试拿4个苹果,足够,拿走后剩余3个苹果。

第五次操作拿走1/2,3不能被2整除,向上取整拿走2个。拿走后剩余1个苹果。

题解

这道题属于模拟类型的算法题,需要按照题目描述的规则模拟操作过程,最终计算出剩余的苹果数量。

解题思路:

  1. 用一个变量 count 记录当前木桶中的苹果数量,初始值为0。
  2. 遍历输入的操作记录,根据操作类型进行相应的处理:
    • 如果是类型1的操作,即苹果数增加,直接将苹果数增加对应的数量。
    • 如果是类型2的操作,即人们来取苹果,判断苹果数是否足够,足够则减去对应的数量。
    • 如果是类型3的操作,即小希取走苹果进行义卖,计算需要取走的苹果数量并减去。
n = int(input())
arr = list(map(int, input().split()))count = 0
for i in range(0, len(arr), 2):op, m = arr[i], arr[i+1]if op == 1:count += melif op == 2:if count >= m:count -= melse:count -= (count + m - 1) // mprint(count)

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

这篇关于T1 神奇苹果桶 (25分) - 小米前端笔试编程题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854012

相关文章

Kafka拦截器的神奇操作方法

《Kafka拦截器的神奇操作方法》Kafka拦截器是一种强大的机制,用于在消息发送和接收过程中插入自定义逻辑,它们可以用于消息定制、日志记录、监控、业务逻辑集成、性能统计和异常处理等,本文介绍Kafk... 目录前言拦截器的基本概念Kafka 拦截器的定义和基本原理:拦截器是 Kafka 消息传递的不可或缺

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义