


【TopCoder SRM 157 DIV 1】 Salary problem solving report_html/css_WEB-ITnose
I originally wanted to post the original title, but then I saw that it has copyright protection. I searched online and it seems that no one has posted the original title in the blog. To avoid trouble, I won’t copy it. The original question.
[Title idea]
The company pays employees wages based on wage yuan per hour. Employees punch in to record a time when they arrive at work, and record a time when they leave work. The time format is "hh:mm:ss". Among them, the overtime hours between 18:00:00 to 23:59:59 and 00:00:00 to 05:59:59 are counted as overtime, and the salary is 1.5 times. When calculating wages, minutes and seconds are converted into hours for calculation. The final wage is rounded up to an integer and subsequent decimals are discarded.
[Function format]
int howMuch(vector <string> arrival, vector <string> departure, int wage)
[Note]
arrival and departure elements have the same number, and arrival[0] [Problem-solving ideas] The idea is not difficult, but it is more troublesome to judge the time interval. There are two key time points: 06:00:00 and 18:00:00. [My Code]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 < hh2 || (hh1 == hh2 && mm1 < mm2) || (hh1 == hh2 && mm1 == mm2 && ss1 < ss2)) { return -1; } return 0; } double duringTime(int hh1, int mm1, int ss1, int hh2, int mm2, int ss2) { double time = 0; if (ss2 >= 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 < arrival.size(); i++) { string time1 = arrival[i]; ss.clear(); ss << time1.substr(0, 2); ss >> beginHour; ss.clear(); ss << time1.substr(3, 2); ss >> beginMinute; ss.clear(); ss << time1.substr(6, 2); ss >> beginSecond; string time2 = departure[i]; ss.clear(); ss << time2.substr(0, 2); ss >> endHour; ss.clear(); ss << time2.substr(3, 2); ss >> endMinute; ss.clear(); ss << time2.substr(6, 2); ss >> endSecond; if (compareTime(beginHour, beginMinute, beginSecond, 6, 0, 0) < 0) { if (compareTime(endHour, endMinute, endSecond, 6, 0, 0) < 0) { total += duringTime(beginHour, beginMinute, beginSecond, endHour, endMinute, endSecond) * wage * 1.5; } else if (compareTime(endHour, endMinute, endSecond, 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, endHour, endMinute, endSecond) * wage; } else if (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) { if (compareTime(endHour, endMinute, endSecond, 18, 0, 0) < 0) { total += duringTime(beginHour, beginMinute, beginSecond, endHour, endMinute, endSecond) * wage; } else if (compareTime(endHour, endMinute, endSecond, 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; }};
The first is to convert the string into an integer value of hours, minutes and seconds. The functions of the two custom functions are: compare two time points, mainly comparing with two key time points 06:00:00 and 18:00:00; calculate the number of hours between two time points.
Then there is a large section of logical judgment to determine whether the employee’s working hours are between 00:00:00 and 06:00:00, between 06:00:00 and 18:00:00, and between 18:00 and 18:00:00. Between 00:00 and 00:00:00, or across time periods.
Due to the poor foundation, the code is rather verbose. Everyone is welcome to improve.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



CSS method to realize that a div is missing a corner: 1. Create an HTML sample file and define a div; 2. Set the width and height background color for the div; 3. Add a pseudo class to the div that needs to delete a corner, and set the pseudo class to Use the same color as the background color, then rotate it 45 degrees, and then position it to the corner that needs to be removed.

Preface Recently, there is a browser script based on ChatGPTAPI on GitHub, openai-translator. In a short period of time, the star has reached 12k. In addition to supporting translation, it also supports polishing and summarizing functions. In addition to browser plug-ins, it also uses tauri packaging. If you have a desktop client, aside from the fact that tauri uses the rust part, the browser part is still relatively simple to implement. Today we will implement it manually. The interface provided by openAI, for example, we can copy the following code and initiate a request in the browser console to complete the translation //Example constOPENAI_API_KEY="s

The div box model is a model used for web page layout. It treats elements in a web page as rectangular boxes. This model contains four parts: content area, padding, border and margin. The advantage of the div box model is that it can easily control the layout of the web page and the spacing between elements. By adjusting the size of the content area, inner margin, border and outer margin, various layout effects can be achieved. The box model also provides some Properties and methods can dynamically change the style and behavior of the box through CSS and JavaScript.

The difference between iframe and div is that iframe is mainly used to introduce external content, which can load content from other websites or divide a web page into multiple areas. Each area has its own independent browsing context, while div is mainly used to divide and organize content. block for layout and style control.

The differences are: 1. div is a block-level element, and span is an inline element; 2. div will automatically occupy a line, while span will not automatically wrap; 3. div is used to wrap larger structures and layouts, and span is used to wrap Text or other inline elements; 4. div can contain other block-level elements and inline elements, and span can contain other inline elements.

MySQL and Oracle: Comparison of Support for Analysis and Reporting Functions In the modern data-driven world, as enterprise data continues to grow, the demand for data analysis and reporting functions is also increasing. As the two most popular relational database management systems (RDBMS), MySQL and Oracle have high support performance in this regard. This article will compare them in terms of their support for data analysis and reporting functions, and demonstrate the differences through code examples. First, let’s take a look at MySQL’s data analysis

This article will share the entire process of training ChatGPT (the latest GPT-4 model version) and generating reports, and discuss the common problems that exist in the use of ChatGPT, and how to use ChatGPT to maximize learning and work efficiency. The following is the entire process of generating an AI safety report. Infrastructure topic selection A high-quality topic selection can help academic researchers quickly determine the entry point of the report, guide readers to capture the main theme of the report, and make the entire report present a clearer structure and logic. By introducing the background of the report or providing keywords and overview to ChatGPT, ChatGPT can generate topic selections in a few seconds for researchers' reference. When we ask questions, we can ask ChatGPT to generate multiple topic choices at the same time, which helps

Title: jQuery Tips: Master the method of adding tags to divs In web development, we often encounter situations where we need to dynamically add tags to the page. You can use jQuery to easily manipulate DOM elements and achieve fast label adding functions. This article will introduce how to use jQuery to add tags in divs, and attach specific code examples. 1. Preparation work Before using jQuery, you need to introduce the jQuery library into the page. You can introduce it through a CDN link or download it to this page.
