原题:
https://vjudge.net/problem/Gym-100641A
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <cmath>
#include <vector>
#include <utility>
#include <set>
#include <map>
#include <sstream>
#include <climits>
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#define pi acos(-1.0)
#define INF 2147483647
using namespace std;
typedef long long ll;
typedef pair<int,int > P;
int main()
{
int a, b;
int t;
char str[10];
scanf("%d", &t);
for (int kase = 1; kase <= t; kase++)
{
scanf("%d%s%d", &a, str, &b);
int h, m, s, x;
if (str[0] == 'a')
{
x = (int)round((120.0 * (a -(12-b) * 30.0)) / 11.0);
if(x<=0)
{
x = (int)round((120.0 * (360+a -(12- b) * 30.0)) / 11.0);
}
int cnt=(b-1)*3600+x;
cnt=(cnt+12*3600)%(12*3600);
h=cnt/3600+1;
cnt%=3600;
m=cnt/60;
cnt%=60;
s=cnt;
}
else
{
double ans = (120.0 * (-a + (12-b) * 30.0)) / 11.0;
x=floor(ans+0.5);
if(x<=0)
{
ans = (120.0 * (360-a + (12-b) * 30.0)) / 11.0;
x=floor(ans+0.5);
}
int cnt=(b-1)*3600-x;
cnt=(cnt+12*3600)%(12*3600);
h=cnt/3600+1;
cnt%=3600;
m=cnt/60;
cnt%=60;
s=cnt;
}
printf("Case %d: %d:%02d:%02d\n", kase,h,m,s);
}
return 0;
}
/*
4
20 after 8
126 til 4
180 til 1
0 after 12
*/