2050第二题- 时间间隔 (HDU

2019年1月1日,在云栖出现了可能是全世界最长的以秒为单位的倒计时装置:九亿多秒倒计时,直到2050年。

给出一个时间S,我们想知道S距离2050年1月1日0点0时0分多少秒。

因为答案可能很大,请输出答案模100的值。

Input第一行一个正整数 T (1T100000)T (1≤T≤100000) 表示数据组数。

对于每组数据,一行一个字符串表示时间。
时间格式为:YYYY-MM-DD HH:MM:SS,分别表示年、月、日、时,分、秒。

输入的时间保证都在2019年1月1日以后(包含当天)。
Output对于每组数据输出一行一个整数表示答案。Sample Input

1
2019-01-01 00:00:00

Sample Output

0
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
using namespace std;

#define ll long long

ll sum1, sum2, sum3;
int year, month, day, h, mi, s, t;

int main()
{
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d-%d-%d%d:%d:%d", &year, &month, &day, &h, &mi, &s);
        sum1 = 0;
        sum2 = 0;
        sum3 = 0;
        int mon[13] = {8, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        for(int y = year; y<2050; y++)
        {
            if((y%4 == 0 && y%100 != 0) || y%400 == 0) sum1 += 366;
            else sum1 += 365;
            if((y%4 == 0 && y%100 != 0) || y%400 == 0) mon[2] = 29;
            for(int m = 1; m<month; m++)
                sum2 += mon[m];
        }
        sum3 += 86400-(h*3600+mi*60+s);
        sum2 += day-1;
        sum1 -= sum2;
        sum1 *= 86400;
        sum1 = (sum1%100+sum3%100)%100;
        printf("%d
", sum1);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/RootVount/p/10939725.html