zoukankan      html  css  js  c++  java
  • HDU 多校对抗赛 J Time Zone

    Time Zone

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 495    Accepted Submission(s): 162


    Problem Description
    Chiaki often participates in international competitive programming contests. The time zone becomes a big problem.
    Given a time in Beijing time (UTC +8), Chiaki would like to know the time in another time zone s.
     
    Input
    There are multiple test cases. The first line of input contains an integer T (1T106), indicating the number of test cases. For each test case:
    The first line contains two integers ab (0a23,0b59) and a string s in the format of "UTC+X'', "UTC-X'', "UTC+X.Y'', or "UTC-X.Y'' (0X,X.Y14,0Y9).
     
    Output
    For each test, output the time in the format of hh:mm (24-hour clock).
     
    Sample Input
    3 11 11 UTC+8 11 12 UTC+9 11 23 UTC+0
     
    Sample Output
    11:11 12:12 03:23
     
    Source
     
     
    题意:北京标准时间是UTC+8
    现在给出标准的北京时间和别的地方的时区
    要求别的地方的当前时间
    模拟题:
    注意细节:1 会有浮点误差,所以把小数位拿出来单独计算
         2注意当h小于0的时候,要转换成前一天的时间
         3是UTC-xy时,可以当成是当前时间+16-xy的时间
    代码如下
    #include <cstdio>
    #include <algorithm>
    #include <iostream>
    #include <cstring>
    using namespace std;
    int main(){
      int T;
      scanf("%d",&T);
     while(T--){
        int hh,mm;
        scanf("%d%d",&hh,&mm);
        char str[100];
        scanf("%s",str);
        int len=strlen(str);
        int flag=0;
        int th=0;
        int tm=0;
        if(str[3]=='+'){
          for(int i=4;i<len;i++){
            if(str[i]=='.'){
              flag=i;
              break;
            }
            th=th*10+str[i]-'0';
          }
          if(flag!=0){
            tm=str[flag+1]-'0';
            mm+=((tm*60)/10);
            if(mm>=60){
              mm-=60;
              th++;
            }
          }
          hh+=(th-8);
          if(hh>=24) hh-=24;
          if(hh<0) hh+=24;
          if(hh<10) cout<<"0"; //前导零
          cout<<hh<<":";
          if(mm<10) cout<<"0";
          cout<<mm<<endl;
        }else {
          int tth=0;
          int th=16;
          for(int i=4;i<len;i++){
            if(str[i]=='.'){
              flag=i;
              break;
            }
            tth=tth*10+str[i]-'0';
          }
          th-=tth;
          if(flag!=0){
            tm=str[flag+1]-'0';
            mm-=((tm*60)/10);
            if(mm<0){
              mm+=60;
              th--;
            }
          }
          hh+=th;
          if(hh>=24) hh-=24;
          if(hh<10) printf("0");
          printf("%d:",hh);
          if(mm<10) printf("0");
          printf("%d
    ",mm);
            }
      }
      return 0;
    }
    /*
    01 14 UTC+2.6
    19:50
    */
    View Code
    每一个不曾刷题的日子 都是对生命的辜负 从弱小到强大,需要一段时间的沉淀,就是现在了 ~buerdepepeqi
  • 相关阅读:
    C语言网 蓝桥杯 1117K-进制数
    C语言网蓝桥杯1116 IP判断
    LeetCode 面试题14- II. 剪绳子 II
    LeetCode 面试题06. 从尾到头打印链表
    LeetCode 面试题05. 替换空格
    LeetCode 面试题04. 二维数组中的查找
    LeetCode 面试题03. 数组中重复的数字
    LeetCode 3. 无重复字符的最长子串
    LeetCode 202. 快乐数
    LeetCode 154. 寻找旋转排序数组中的最小值 II
  • 原文地址:https://www.cnblogs.com/buerdepepeqi/p/9357330.html
Copyright © 2011-2022 走看看