# Time Calculation# Modular Arithmetic

b758 - 牛仔(ㄗˇ)很忙

🔗 前往 ZeroJudge 原題

題目描述

題目描述了蛋塔寄住在阿蕙家,阿蕙午睡時間不能被打擾。題目給定現在的時間,要求計算出最早可以在多久後才能吵醒阿蕙,並以 HH:MM 的格式輸出。阿蕙的午睡時間是兩個半小時,也就是 2 小時 30 分鐘。

解題思路

題目要求計算在當前時間加上 2 小時 30 分鐘後的時間。由於時間是 24 小時制,需要處理分鐘數超過 59 的情況,以及小時數超過 23 的情況。程式碼直接將小時數加 2,分鐘數加 30,然後進行必要的進位處理。如果分鐘數超過 59,則將分鐘數減 60,小時數加 1。如果小時數超過 23,則將小時數減 24。最後,將小時數和分鐘數格式化為兩位數的字符串輸出。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>

using namespace std;

int main(){
	
	int h=0;
	int m=0;
	while (cin >> h >> m){
		h+=2;
		m+=30;
		if(m>59){
			m-=60;
			h++;
		}
		if(h>23){
			h-=24;
		}
		if(h<10){
			cout << 0;
		}
		cout << h << ":";
		if(m<10){
			cout << 0;
		}
		cout << m <<endl;
		
		
	}
	
}

Discussion