【牛客】時間

lnm_lym發表於2020-10-27

來源:牛客網

題目描述

眾所周知,NOIP及其模擬賽的比賽時長均為3小時30分鐘。
Alice和Bob參加了於h時m分開始的2020牛客NOIP賽前集訓營-提高組,請你告訴他們比賽結束的時間。

輸入描述:

共一行:一個形如hh:mm的字串,表示比賽開始的時間。位數不足將填補0。

輸出描述:

共一行:一個形如hh:mm的字串,表示比賽結束的時間。位數不足請填補0。

示例1

輸入
00:00
輸出
03:30

示例2

輸入
00:30
輸出
04:00

示例3

輸入
20:30
輸出
00:00

備註:

存在獨立的30%的測試點,滿足h<20,m<30。
存在獨立的30%的測試點,滿足h<20。
存在獨立的30%的測試點,滿足m<30。
對於全部的資料,滿足 0 ≤ h < 24 , 0 ≤ m < 60 0\leq h<24, 0\leq m<60 0h<24,0m<60
注:獨立指測試點集合互不相交。


解題思路

就是一個簡單的加減法
考試的時候想當然,處理24:00這個問題的時候,只用了

if (h == 24) h -= 24

這種絕錯的方式

if (h >= 24) h %= 24

Code

#include <iostream>
#include <cstdio>

using namespace std;

string s;
int i, x, y;

int main(){
    scanf ("%d:%d", &x, &y);
    
    y = y + x * 60;//全部換算為分鐘
    y += 3 * 60 + 30;
    y %= 24 * 60;//%24小時的分鐘
    x = y / 60, y %= 60;//換算成hh:mm形式
    
    if (x < 10) printf ("0");//記得往前補0
    printf ("%d:", x);
    if (y < 10) printf ("0");
    printf ("%d", y);
}