题目链接:https://www.nowcoder.com/acm/contest/105/A

       模拟题,但是进位需要注意一下。


AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#define ll long long
using namespace std;
int n;
ll sum;
ll hh,mm,ss,day,DAY,HH,MM,SS;
string str1,str2;

int main()
{
  scanf("%d",&n);
  while(n--){
    sum = 0;
    cin>>str1>>str2;
    int len1 = str1.length();
    int len2 = str2.length();
    ss = (str1[len1-2]-'0')*10 + (str1[len1-1]-'0');
    SS = (str2[len2-2]-'0')*10 + (str2[len2-1]-'0');
    mm = (str1[len1-5]-'0')*10 + (str1[len1-4]-'0');
    MM = (str2[len2-5]-'0')*10 + (str2[len2-4]-'0');
    hh = (str1[len1-8]-'0')*10 + (str1[len1-7]-'0');
    HH = (str2[len2-8]-'0')*10 + (str2[len2-7]-'0');
    day = str1[0]-'0';
    for(int i=1;i<len1;i++){
      if(str1[i]=='d')break;
      day*=10;
      day+=(str1[i] - '0');
    }
    DAY = str2[0]-'0';
    for(int i=1;i<len2;i++){
      if(str2[i]=='d')break;
      DAY*=10;
      DAY+=(str2[i] - '0');
    }
    if(SS<ss){
      SS+=60;
      MM-=1;
    }
    if(MM<mm){
      MM+=60;
      HH-=1;
    }
    if(HH<hh){
      HH+=24;
      DAY-=1;
    }
    sum += (DAY-day)*86400;
    sum += (HH-hh)*3600;
    sum += (MM-mm)*60;
    sum += (SS-ss);
    printf("%lld\n",sum);
  }
  return 0;
}