ホームページ ウェブフロントエンド htmlチュートリアル 【TopCoder SRM 157 DIV 1】給与問題解決レポート_html/css_WEB-ITnose

【TopCoder SRM 157 DIV 1】給与問題解決レポート_html/css_WEB-ITnose

Jun 24, 2016 am 11:59 AM
div 報告 問題解決

元々は元の質問を投稿したかったのですが、ネットで検索したところ、元の質問をブログに投稿している人はいないようでした。トラブルを避けるため、元の質問はコピーしません。質問。

[タイトルのアイデア]

会社は、時間当たりの賃金元に基づいて従業員に賃金を支払います。時間の形式は「hh:mm:ss」です。このうち、18時00分00秒~23時59分59秒と0時00分00秒~05時59分59秒の時間帯は時間外労働とみなされ、給与は1.5倍となります。賃金を計算する場合、分と秒は時間に変換されて計算されます。最終賃金は整数に切り上げられ、小数点以下は切り捨てられます。

【関数形式】

int howMuch(vector <string> arrival, vector <string> departure, int wage)
ログイン後にコピー

【注意】

到着は出発と同じ要素数を持ち、到着[0]<出発[0]<到着[1]<出発[1] 』など。

[問題解決のアイデア]

アイデアは難しくありませんが、時間間隔を判断するのがより困難です。 06:00:00 と 18:00:00 の 2 つの重要な時間ポイントがあります。

【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;	}}; 

まず、文字列を時、分、秒の整数値に変換します。 2 つのカスタム関数の機能は次のとおりです。2 つの時点を比較し、主に 2 つの主要な時点 06:00:00 と 18:00:00 を比較します。2 つの時点の間の時間数を計算します。

その後、論理的判断の大部分が実行され、従業員の勤務時間が 00:00:00 から 06:00:00 の間、06:00:00 から 18:00:00 の間、および 18:00 の間であるかどうかが決定されます。 :00 と 18:00:00 の間、または複数の期間にわたって。

基礎が不十分なため、コードは少し冗長になっています。改善していただければ幸いです。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CSSを使用してdivの角が欠けていることを認識する方法 CSSを使用してdivの角が欠けていることを認識する方法 Jan 30, 2023 am 09:23 AM

div の角が欠けていることを認識するための CSS メソッド: 1. HTML サンプル ファイルを作成し、div を定義します; 2. div の幅と高さの背景色を設定します; 3. 削除する必要がある div に疑似クラスを追加します隅に配置し、擬似クラスを背景色と同じ色を使用するように設定し、45 度回転して、削除する必要がある隅に配置します。

ChatGPT APIに基づくワードマーキング翻訳ブラウザスクリプトの実装 ChatGPT APIに基づくワードマーキング翻訳ブラウザスクリプトの実装 May 01, 2023 pm 03:28 PM

はじめに 最近 GitHub に ChatGPTAPI をベースにしたブラウザスクリプト openai-translator が登場しました 短期間でスターが 12k に達しました 翻訳だけでなく磨きや要約機能もサポートしています ブラウザプラグに加えて-ins, tauri パッケージも使用します。デスクトップ クライアントをお持ちの場合は、tauri が Rust 部分を使用するという事実を除けば、ブラウザ部分の実装はまだ比較的簡単です。今日は手動で実装します。 openAI によって提供されるインターフェイス。たとえば、次のコードをコピーし、ブラウザ コンソールでリクエストを開始して変換を完了できます。 //Example constOPENAI_API_KEY="s

divボックスモデルとは何ですか divボックスモデルとは何ですか Oct 09, 2023 pm 05:15 PM

div ボックス モデルは、Web ページのレイアウトに使用されるモデルです。Web ページ内の要素を長方形のボックスとして扱います。このモデルには、コンテンツ領域、パディング、ボーダー、マージンの 4 つの部分が含まれています。 div ボックス モデルの利点は、Web ページのレイアウトと要素間の間隔を簡単に制御できることであり、コンテンツ領域、内側の余白、境界線、外側の余白のサイズを調整することで、さまざまなレイアウト効果を実現できます。ボックス モデルには、CSS と JavaScript を通じてボックスのスタイルと動作を動的に変更できるいくつかのプロパティとメソッドも用意されています。

iframeとdivの違いは何ですか iframeとdivの違いは何ですか Aug 28, 2023 am 11:46 AM

iframe と div の違いは、iframe は主に外部コンテンツを導入するために使用され、他の Web サイトからコンテンツをロードしたり、Web ページを複数の領域に分割したりできます。各領域には独自の独立した閲覧コンテキストがあり、div は主に分割および分割するために使用されます。コンテンツを整理し、レイアウトとスタイルを制御するためのブロック。

divとspanの違いは何ですか? divとspanの違いは何ですか? Nov 02, 2023 pm 02:29 PM

違いは次のとおりです: 1. div はブロックレベル要素であり、span はインライン要素です。2. div は自動的に行を占有しますが、span は自動的に折り返されません。3. div はより大きな構造とレイアウトを折り返すために使用されます。テキストまたは他のインライン要素をラップするために、span が使用されます。4. div には他のブロックレベル要素とインライン要素を含めることができ、span には他のインライン要素を含めることができます。

MySQL と Oracle: 分析とレポートのサポートの比較 MySQL と Oracle: 分析とレポートのサポートの比較 Jul 12, 2023 pm 07:37 PM

MySQL と Oracle: 分析およびレポート機能のサポートの比較 現代のデータドリブンの世界では、企業データが増大し続けるにつれて、データ分析およびレポート機能の需要も高まっています。 MySQL と Oracle は、最も人気のある 2 つのリレーショナル データベース管理システム (RDBMS) として、この点で高いサポート パフォーマンスを備えています。この記事では、データ分析およびレポート機能のサポートの観点からこれらを比較し、コード例を通じて違いを示します。まず、MySQL のデータ分析を見てみましょう

この記事では、ChatGPT を使用してレポートをすばやく作成する方法を説明します。 この記事では、ChatGPT を使用してレポートをすばやく作成する方法を説明します。 May 14, 2023 pm 04:04 PM

この記事では、ChatGPT (最新の GPT-4 モデル バージョン) のトレーニングとレポート生成のプロセス全体を共有し、ChatGPT の使用に存在する一般的な問題と、ChatGPT を使用して学習と作業の効率を最大化する方法について説明します。以下は、AI 安全性レポートを生成するプロセス全体です。インフラストラクチャのトピックの選択 高品質のトピックの選択は、学術研究者がレポートの開始点を迅速に決定し、読者がレポートの主要テーマを理解できるようにガイドし、レポート全体の構造とロジックをより明確にするのに役立ちます。レポートの背景を紹介したり、ChatGPT にキーワードや概要を提供したりすることで、ChatGPT は研究者の参考となるトピックの選択を数秒で生成できます。質問するとき、ChatGPT に複数のトピックの選択肢を同時に生成するように依頼できます。

jQuery のヒント: div にタグを追加する方法をマスターする jQuery のヒント: div にタグを追加する方法をマスターする Feb 23, 2024 pm 01:51 PM

タイトル: jQuery ヒント: div にタグを追加する方法をマスターする Web 開発では、ページにタグを動的に追加する必要がある状況によく遭遇します。 jQuery を使用すると、DOM 要素を簡単に操作し、高速なラベル追加機能を実現できます。この記事では、jQueryを使ってdivにタグを追加する方法と、具体的なコード例を紹介します。 1. 準備作業 jQueryを使用する前に、CDNリンクから導入するか、このページからダウンロードしてjQueryライブラリをページに導入する必要があります。

See all articles