• 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
  • 相关阅读:
    时间复杂度和空间复杂度的故事
    Go -- 并发编程的两种限速方法
    Go -- type 和断言 interface{}转换
    Go -- 实现二叉搜索树
    Go语言程序的状态监控
    Go -- 中开启gctrace
    Go --- GC优化经验
    Mysql 性能优化20个原则(4)
    Mysql 性能优化20个原则(3)
    查看 activex 组件的方法
  • 原文地址:https://www.cnblogs.com/buerdepepeqi/p/9357330.html
Copyright © 2020-2023  润新知