hdu 4510(模拟)

小Q系列故事——为什么时光不能倒流

Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 3757    Accepted Submission(s): 1613

Problem Description


  我以为我会是最坚强的那一个 我还是高估了自己
  我以为你会是最无情的那一个 还是我贬低了自己

  就算不能够在一起 我还是为你担心
  就算你可能听不清 也代表我的心意

  那北极星的眼泪 闪过你曾经的眼角迷离
  那玫瑰花的葬礼 埋葬的却是关于你的回忆

  如果时光可以倒流 我希望不要和你分离
  如果注定分离 我希望不要和你相遇

    ——摘自《小Q失恋日记 》第17卷520页

  这是码农小Q第58次失恋了,也是陷得最深的一次。
 
 要知道,小Q自从第一次到腾讯公司报到,就被风姿绰约的前台MM彻底迷住了,这1000多个日日夜夜他无时无刻不在憧憬着他们美好的未来。为了能见到
MM,他每天早到晚归,甘愿加班,连续3年被评为优秀员工,并且以全公司最快的速度晋级到四级岗位。就在他终于鼓足勇气准备表白的时候,MM却满面春风地
送来了一包喜糖......
  现在小Q专门请了年休假治疗情伤,但情绪总不见好转,每天足不出户,眼睛盯着墙上的钟表,反复念叨:“表白要趁早,时光不倒流,表白要趁早,时光不倒流......”
  假设现在已知当前的时间,让时间倒退回若干,你能计算出钟表显示的时间吗?

Input

输入首先包含一个整数N,表示有N组测试用例。
接下来的N行表示N个测试用例,每行包括2个时间HH:MM:SS hh:mm:ss
HH:MM:SS表示当前的时间,hh:mm:ss表示希望倒退回去的时间。
[Technical Specification]
00<=HH<=11
00<=hh<=99
00<=MM, SS, mm, ss<=59

Output

请计算并输出钟表倒退后显示的时间,要求输出格式为HH:MM:SS(即时分秒均显示2位,不足则补0),每组数据输出占一行。

Sample Input

2
11:28:32 02:14:21
05:00:00 96:00:01

Sample Output

09:14:11
04:59:59

水题。。注意时钟是12小时制的。。

#include <stdio.h>
#include <string.h>
using namespace std;
typedef long long LL;

int main(){
    int tcase;
    int HH,MM,SS,hh,mm,ss;
    scanf("%d",&tcase);
    while(tcase--){
        scanf("%d:%d:%d %d:%d:%d",&HH,&MM,&SS,&hh,&mm,&ss);
        hh%=12;
        bool flag = false,flag1 = false;
        SS-=ss;
        if(SS<0) SS+=60,flag = true;
        MM-=mm;
        if(flag){
            MM-=1;
        }
        if(MM<0) {
            MM+=60;
            flag1= true;
        }
        HH-=hh;
        if(flag1){
            HH-=1;
        }
        if(HH<0) HH+=12;
        printf("%02d:%02d:%02d\n",HH,MM,SS);
    }
}
时间: 2024-12-30 18:53:52

hdu 4510(模拟)的相关文章

HDU 4930 模拟

Fighting the Landlords Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 266    Accepted Submission(s): 87 Problem Description Fighting the Landlords is a card game which has been a heat for yea

hdu 1022 模拟栈

其实就是模拟一下栈啦. 1 #include <iostream> 2 using namespace std; 3 4 const int N = 10; 5 char o1[N]; 6 char o2[N]; 7 char s[N]; 8 int ans[N * 2]; 9 10 int main () 11 { 12 int n; 13 while ( cin >> n ) 14 { 15 cin >> o1 >> o2; 16 int top = 0

hdu 4054 模拟 练习十六进制输出

http://acm.hdu.edu.cn/showproblem.php?pid=4054 貌似一般区域赛都会有一道水题 这道题PE了一次  因为输出每个数其实是两个位 如果用空格补齐的话  应该用两个空格 我用了一个空格,,, 学到: 1.%x  十六进制输出  可以输出整型,字符型等等 2.%02x  保证两位 而且会输出先导0的两位 //#pragma comment(linker, "/STACK:102400000,102400000") #include <cstd

hdu 5246(模拟)

题解:直接模拟 #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 10005; long long n, m, k; long long s[N]; int main() { int t, cas = 1; scanf("%d", &t); while (t--) { scanf("%lld%l

hdu 5386 模拟

想明白以后会发现其实就是模拟... 因为每次只能给一整行或者一整列赋值,所以目标矩阵一开始一定有一行或者一列上数字都是相同的,然后找到对应的操作,把那一行或者那一列标记为访问过.然后新的矩阵也一定能找到一行或者一列数字都相同,再找到相应的操作,标记那一行或者那一列,依次类推,然后没有用到的操作随便找个顺序就好了.其实初始矩阵并没有什么用...... 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio>

HDU 5071 模拟

考察英语的题 - -# 按条件模拟,一遍就行了,每个聊天对象有其价值U,数组模拟队列过程即可,若存在Top标记,则和Top标记的人聊天,否则和队列的第一个人聊天 mark记录队尾,top记录Top操作,data[i].p记录U,data[i].x记录chat数,data[i].y记录该人是否被删除 Add U:在 队尾插入价值为U的人,需要特判U人已经存在 Close U::在整个队列中查找价值为U的人,将其删除,需要特判该人不存在 Chat x:当前聊天页面的人chat+=x,特判当前队列没有

HDU 2860 (模拟+并查集)

Regroup Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1057    Accepted Submission(s): 297 Problem Description When ALPC42 got to a panzer brigade, He was asked to build software to help them r

hdu 5373 模拟

简单模拟题,可以利用一下能被11整除的数的特点:奇数位的数字和与偶数位的数字和之差能被11整除. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 using namespace std; 6 7 const int N = 1000000; 8 int s[N]; 9 int mid[N]; 10 11 int main () 12 {

hdu 5055(模拟)

Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1481    Accepted Submission(s): 552 Problem Description Recently, Bob has been thinking about a math problem.There are N Digi