【TopCoder SRM 157 DIV 1】 Salary 解题报告_html/css_WEB-ITnose
本来想把原题给贴过来的,后来看到人家有版权保护,在网上搜了一下,好像也没有人在博客中贴过原题,为避免麻烦,就不copy人家原题了。
【题目大意】
公司按照每小时 wage 元给员工发工资,员工上班打卡记录一个时间,下班记录一个时间,时间格式为 "hh:mm:ss"。其中,18:00:00 到 23:59:59 和 00:00:00 到 05:59:59 之间算加班时间,工资为1.5倍。计算工资时,分钟和秒都换算成小时来计算,最终的工资取整数,舍弃后面的小数。
【函数格式】
int howMuch(vector <string> arrival, vector <string> departure, int wage)</string></string>
【注意】
arrival和departure元素个数一样,且arrival[0] 【解题思路】 思路不难,只是时间区间判断比较麻烦,有两个时间关键点06:00:00和18:00:00。 【我的代码】 首先是字符串转换成时分秒整数值。两个自定义函数功能分别为:比较两个时间点先后,主要是和两个关键时间点06:00:00和18:00:00比较;计算两个时间点之间的小时数。 然后一大段逻辑判断,判断员工工作时间是不是在00:00:00和06:00:00之间、06:00:00和18:00:00之间、18:00:00和00:00:00之间,还是说跨时间段。class Salary {public: int compareTime(int hh1, int mm1, int ss1, int hh2, int mm2, int ss2) { if (hh1 > hh2 || (hh1 == hh2 && mm1 > mm2) || (hh1 == hh2 && mm1 == mm2 && ss1 > ss2)) { return 1; } if (hh1 = ss1) { time += (ss2 - ss1) / 3600.0; } else { time += (ss2 + 60 - ss1) / 3600.0; mm2 -= 1; } if (mm2 >= mm1) { time += (mm2 - mm1) / 60.0; } else { time += (mm2 + 60 - mm1) / 60.0; hh2 -= 1; } time += hh2 - hh1; return time; } int howMuch(vector <string> arrival, vector <string> departure, int wage) { int beginHour, endHour, beginMinute, endMinute, beginSecond, endSecond; stringstream ss; double total = 0; for (int i = 0; i > beginHour; ss.clear(); ss > beginMinute; ss.clear(); ss > beginSecond; string time2 = departure[i]; ss.clear(); ss > endHour; ss.clear(); ss > endMinute; ss.clear(); ss > endSecond; if (compareTime(beginHour, beginMinute, beginSecond, 6, 0, 0) = 0 && compareTime(endHour, endMinute, endSecond, 18, 0, 0) = 0) { total += duringTime(beginHour, beginMinute, beginSecond, 6, 0, 0) * wage * 1.5; total += duringTime(6, 0, 0, 18, 0, 0) * wage; total += duringTime(18, 0, 0, endHour, endMinute, endSecond) * wage * 1.5; } } else if (compareTime(beginHour, beginMinute, beginSecond, 18, 0, 0) = 0) { total += duringTime(beginHour, beginMinute, beginSecond, 18, 0, 0) * wage; total += duringTime(18, 0, 0, endHour, endMinute, endSecond) * wage * 1.5; } } else { total += duringTime(beginHour, beginMinute, beginSecond, endHour, endMinute, endSecond) * wage * 1.5; } } return (int)total; }};</string></string>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

css实现div缺一个角的方法:1、创建一个HTML示例文件,并定义一个div;2、给div设置宽高背景色;3、给需要删除一角的div增加一个伪类,将伪类设置成跟背景色一样的颜色,然后旋转45度,再定位到需要去除的那个角即可。

前言最近GitHub上有个基于ChatGPTAPI的浏览器脚本,openai-translator,短时间内star冲到了12k,功能上除了支持翻译外,还支持润色和总结功能,除了浏览器插件外,还使用了tauri打包了一个桌面客户端,那抛开tauri是使用rust部分,那浏览器部分实现还是比较简单的,今天我们就来手动实现一下。openAI提供的接口比如我们可以复制以下代码,在浏览器控制台中发起请求,就可以完成翻译//示例constOPENAI_API_KEY="s

div盒模型是一种用于网页布局的模型,它将网页中的元素视为一个个矩形的盒子,这个模型包含了四个部分:内容区域、内边距、边框和外边距。div盒模型的好处是可以方便地控制网页布局和元素之间的间距,通过调整内容区域、内边距、边框和外边距的大小,可以实现各种不同的布局效果,盒模型也提供了一些属性和方法,可以通过CSS和JavaScript来动态地改变盒子的样式和行为。

iframe和div的不同是iframe主要用于引入外部内容,可以加载其他网站的内容或将一个网页分割成多个区域,每个区域有自己的独立的浏览上下文,而div主要用于分割和组织内容的区块,用于布局和样式控制。

区别有:1、div是一个块级元素,span是一个行内元素;2、div会自动占据一行,span则不会自动换行;3、div用于包裹比较大的结构和布局,span用于包裹文本或者其他行内元素;4、div可以包含其他块级元素和行内元素,span可以包含其他行内元素。

MySQL和Oracle:对于分析和报告功能的支持对比在现代数据驱动的世界中,随着企业数据的不断增长,对于数据分析和报告功能的需求也越来越大。作为两个最受欢迎的关系型数据库管理系统(RDBMS),MySQL和Oracle在这方面具有很高的支持性能。本文将对它们在数据分析和报告功能的支持方面进行比较,并通过代码示例展示其差异。首先,我们来看看MySQL在数据分

本文将分享训练ChatGPT(最新GPT-4模型版本)并生成报告的全过程,并就ChatGPT使用过程中存在哪些常见的问题,如何使用ChatGPT来最大化提升学习、工作效率等问题进行探讨。以下是AI安全报告生成全过程。基础架构选题优质的选题能够帮助学术研究者快速确定报告的切入点,引导读者捕捉报告的主旨,使整个报告呈现更清晰的架构和逻辑。通过向ChatGPT介绍报告的背景或者提供关键词、概述,ChatGPT能够在几秒内生成选题,供研究者参考。我们在提问时,可要求ChatGPT同时生成多个选题,这在帮

标题:jQuery技巧:掌握在div中添加标签的方法在网页开发中,经常会遇到需要动态添加标签到页面中的情况。使用jQuery可以方便地操作DOM元素,实现快速的标签添加功能。本文将介绍如何使用jQuery在div中添加标签的方法,并附上具体的代码示例。1.准备工作在使用jQuery之前,需要在页面中引入jQuery库,可以通过CDN链接引入,也可以下载到本
