这个题目精度wa到自闭
给一组测试数据 12 59 utc-4.9
思路很简单就是转化为分钟计算然后分钟减一减,会出现多一天跟少一天的情况然后在分类,
最坑的地方在于精度的丢失
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int n,m;
double a;
char a1,a2,a3,a4;
scanf("%d %d %c%c%c%c%lf",&n,&m,&a1,&a2,&a4,&a3,&a);
int ans;
int ans1,ans2;
ans=n*60+m;
if(a3=='+')
{
double t;
t=a-8;
if(t<0)
{
t=-t;
ans1=ans-int(t*60+0.5);
if(ans1<0)
{
int ans3=ans1;
ans1=(24*60+ans1)/60;
ans2=24*60+ans3-ans1*60;
}
else
{
ans1=ans1/60;
ans2=ans-int(t*60+0.5)-ans1*60;
}
}
else
{
int t1=ans+int(t*60+0.5);
if(t1>=24*60)
{
ans1=(t1-24*60)/60;
ans2=(t1-24*60-ans1*60);
}
else
{
ans1=t1/60;
ans2=t1-ans1*60;
}
}
}
else
{
double t;
t=a+8;
ans1=ans-int(t*60+0.5);
if(ans1<0)
{
int ans3=ans1;
ans1=(24*60+ans1)/60;
ans2=24*60+ans3-ans1*60;
}
else
{
ans1=ans1/60;
ans2=ans-int(t*60+0.5)-ans1*60;
}
}
printf("%02d:%02d\n",ans1,ans2);
}
return 0;
}