传送门:HDU5276
【题意】YJC给你时针和分针间的夹角,让你告诉他现在是什么时候。
你将以以下格式给出可能的时间:
HH:MM:SS
分别表示小时,分钟,秒(比如:08:30:20)在这里使用12小时制,也就是说时间范围是从00:00:00到11:59:59
另外,YJC不想要太精确的时间,所以当且仅当SS mod 10 = 0,答案才合法。
【分析】利用公式:角度=5.5m-30h;枚举小时和秒数,秒数每次+10,算角度即可复杂度360*12*T,错在忘记考虑角度>180的时候要用360减去,唉,实在太弱了。
【AC CODE】15ms
#include <cstdio> #include <cstring> #include <cctype> #include <cmath> #include <set> //#include <unordered_set> #include <queue> #include <stack> #include <vector> #include <string> #include <algorithm> using namespace std; typedef long long LL; #define rep(i,a,n) for(int i = a; i < n; i++) #define repe(i,a,n) for(int i = a; i <= n; i++) #define per(i,n,a) for(int i = n; i >= a; i--) #define clc(a,b) memset(a,b,sizeof(a)) const int INF = 0x3f3f3f3f, MOD = 2160000*2; inline int f(int h, int s) { int ans = abs(1100*s-30*12000*h); if(ans > 180*12000) ans = 360*12000-ans; return ans; } int main() { #ifdef SHY freopen("d:\\1.txt", "r", stdin); #endif int n; while(~scanf("%d", &n)) { rep(h,0,12) { for(int s = 0; s < 3600; s += 10) { if(n == f(h,s)) printf("%02d:%02d:%02d\n", h,s/60,s%60); } } } return 0; }