# hdu5387 钟表指针之间夹角

B - Clock
Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Appoint description:

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

Input

There are  test cases
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 120



1/120 度，那么我们将表盘看做一个坐标系，12点钟为起点，那么可以计算出每个指针这一刻的角度是多少，但是为了避免

，然后要化简为最简分式就可以了，（分子是120）

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <stdlib.h>
using namespace std;
int gcd(int a,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main()
{
int h,m,s;
int H,M,S;
int ans1,ans2,ans3;
char str[20];
int t;
cin>>t;
while(t--)
{
cin>>str;
h=(str[0]-'0')*10+(str[1]-'0');
m=(str[3]-'0')*10+(str[4]-'0');
s=(str[6]-'0')*10+(str[7]-'0');
if(h>=12)
h-=12;

//cout<<h<<endl;
H=h*3600+m*60+s;
M=m*720+12*s;
S=s*720;

ans1=max(H,M)-min(H,M);
ans2=max(H,S)-min(H,S);
ans3=max(M,S)-min(M,S);

ans1=min(ans1,43200-ans1);
ans2=min(ans2,43200-ans2);
ans3=min(ans3,43200-ans3);

int g1,g2,g3;
g1=gcd(ans1,120);
g2=gcd(ans2,120);
g3=gcd(ans3,120);

ans1/=g1;
ans2/=g2;
ans3/=g3;

int f1,f2,f3;
f1=120/g1;
f2=120/g2;
f3=120/g3;

if(f1==1)
{
cout<<ans1<<" ";
}

else
{
if(ans1==0)
{
cout<<0<<" ";
}
else
cout<<ans1<<"/"<<f1<<" ";
}

if(f2==1)
{
cout<<ans2<<" ";
}

else
{
if(ans2==0)
cout<<0<<" ";
else
cout<<ans2<<"/"<<f2<<" ";
}

if(f3==1)
{
cout<<ans3<<" "<<endl;
}

else
{
if(ans3==0)
cout<<0<<" "<<endl;
else
cout<<ans3<<"/"<<f3<<" "<<endl;
}
}
return 0;
}

• 本文已收录于以下专栏：

## Android获取两条线之间的夹角度数

Android获取两条线之间的夹角度数核心代码centerX、centerY为公共点，xInView、yInView为触摸点的坐标 /** *获取两条线的夹角 * @param c...
• yaodong379
• 2016年09月11日 15:52
• 1580

## [C#]快速求出三点之间的夹角

public static double Angle(Point cen, Point first, Point second) { const double ...
• kingsollyu
• 2012年12月06日 15:38
• 4049

## C++ 实现两个向量之间的夹角

• sinat_31425585
• 2017年07月15日 09:29
• 1749

## 【Unity3D自学记录】Unity3D之自制小钟表

• hackdjh
• 2014年07月23日 15:23
• 1265

## 点积应用-求两个向量夹角

• SevenColorFish
• 2011年10月05日 22:24
• 18386

• java2000_net
• 2008年10月21日 19:19
• 12639

## 再谈空间向量之间的夹角问题

• happy__888
• 2008年03月05日 19:47
• 4115

## HTML5---canvas 指针时钟-clock

anvas 指针时钟-clock
• damys
• 2015年08月20日 10:33
• 3570

## Android绘制时钟

• shakespeare001
• 2016年01月19日 16:26
• 3740