题目链接: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;
}