HDOJ 5387 Clock 水+模拟
Posted lytwajue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJ 5387 Clock 水+模拟相关的知识,希望对你有一定的参考价值。
Clock
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 316 Accepted Submission(s): 215
Problem Description
Give a time.(hh:mm:ss),you should answer the angle between any two of the minute.hour.second hand
Notice that the answer must be not more 180 and not less than 0
Notice that the answer must be not more 180 and not less than 0
Input
There are T (1≤T≤104) test
cases
for each case,one line include the time
0≤hh<24 ,0≤mm<60 ,0≤ss<60
for each case,one line include the time
Output
for each case,output there real number like A/B.(A and B are coprime).if it‘s an integer then just print it.describe the angle between hour and minute,hour and second hand,minute and second hand.
Sample Input
4 00:00:00 06:00:00 12:54:55 04:40:00
Sample Output
0 0 0 180 180 0 1391/24 1379/24 1/2 100 140 120Hint每行输出数据末尾均应带有空格
Source
/* *********************************************** Author :CKboss Created Time :2015年08月13日 星期四 22时23分29秒 File Name :HDOJ5387.cpp ************************************************ */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <cmath> #include <cstdlib> #include <vector> #include <queue> #include <set> #include <map> using namespace std; int hh,mm,ss; int alltime(int h,int m,int s) { return h*3600+m*60+s; } const int mod=360*120; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int T_T; scanf("%d",&T_T); while(T_T--) { scanf("%d:%d:%d",&hh,&mm,&ss); int at=alltime(hh,mm,ss); int hhdu=at%mod; int mmdu=12*at%mod; int ssdu=720*at%mod; int dur_hm=abs(mmdu-hhdu); if(dur_hm>mod/2) dur_hm=mod-dur_hm; int dur_hs=abs(hhdu-ssdu); if(dur_hs>mod/2) dur_hs=mod-dur_hs; int dur_ms=abs(mmdu-ssdu); if(dur_ms>mod/2) dur_ms=mod-dur_ms; int g1=__gcd(dur_hm,120); int g2=__gcd(dur_hs,120); int g3=__gcd(dur_ms,120); ///print dur_hm if(g1==120) printf("%d ",dur_hm/g1); else printf("%d/%d ",dur_hm/g1,120/g1); ///print dur_hs if(g2==120) printf("%d ",dur_hs/g2); else printf("%d/%d ",dur_hs/g2,120/g2); ///print dur_hs if(g3==120) printf("%d \n",dur_ms/g3); else printf("%d/%d \n",dur_ms/g3,120/g3); } return 0; }
以上是关于HDOJ 5387 Clock 水+模拟的主要内容,如果未能解决你的问题,请参考以下文章
HDOJ 1393 Weird Clock(明确题意就简单了)