HDU 6308 Time Zone(格式化输入)

题目链接:Time Zone

题意

给出北京时间,要求计算其他时间。

输入

第一行为一个整数 T T ,接下去 T T 行每行前两个数字为 h,m (0h23,0m59) h , m   ( 0 ≤ h ≤ 23 , 0 ≤ m ≤ 59 ) ,表示北京时间,接着是一个格式为 UTC+X / UTC-X / UTC+X.Y / UTC-X.Y 的字符串,其中 0X,X.Y14,0Y9 0 ≤ X , X . Y ≤ 14 , 0 ≤ Y ≤ 9

输出

输出给定 UTC-X[.Y] 对应的时间。

样例

输入
3
11 11 UTC+8
11 12 UTC+9
11 23 UTC+0
输出
11:11
12:12
03:23

题解

将所有数字都转化为分钟后按照题意模拟,注意精度误差,不要读入小数。

过题代码

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define LL long long
int T;
int h, m, a, b;
char ch;

int main() {
    #ifdef Dmaxiya
    freopen("test.txt", "r", stdin);
    #endif // Dmaxiya
    ios::sync_with_stdio(false);

    scanf("%d", &T);
    while(T--) {
        b = 0;
        scanf("%d %d UTC%c%d.%d", &h, &m, &ch, &a, &b);
        m += h * 60;
        b = b * 6 + a * 60;
        if(ch == '-') {
            b *= -1;
        }
        m += b - 480;
        m = (m % (24 * 60) + 24 * 60) % (24 * 60);
        h = m / 60;
        m = m % 60;
        printf("%02d:%02d\n", h, m);
    }

    return 0;
}

你可能感兴趣的:(瞎搞)