4 00:00:00 06:00:00 12:54:55 04:40:00
0 0 0 180 180 0 1391/24 1379/24 1/2 100 140 120Hint每行输出数据末尾均应带有空格
题意:给你一个时刻,求出时针与分针,分针与秒针,秒针与时针的夹角。
题解:分别求出时针,分针,秒针与12整点的夹角,求的时候把夹角*120,再求两两的夹角除以120.
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#define ll int
using namespace std;
ll gcd(ll a,ll b) {
return b==0?a:gcd(b,a%b);
}
int main() {
//freopen("test.in","r",stdin);
int t;
cin>>t;
while(t--) {
int h,m,s;
scanf("%d:%d:%d",&h,&m,&s);
if(h>=12)h-=12;
///ah=h*30+0.5*m+s/120 120为分母的公倍数
int ah=h*30*120+m*60+s;///时针与12正点的夹角*120
///放大120倍是她为整数,下面同理
int am=m*6*120+s*12;
int as=6*s*120;
int gd=120;
int a1,a2,a3;
///时-分
a1=ah>am?ah-am:am-ah;
a1=a1>180*120?360*120-a1:a1;
///分-秒
a2=am>as?am-as:as-am;
a2=a2>180*120?360*120-a2:a2;
///秒-时
a3=as>ah?as-ah:ah-as;
a3=a3>180*120?360*120-a3:a3;
if(a1%gd==0)
printf("%d ",a1/gd);
else
printf("%d/%d ",a1/gcd(a1,gd),gd/gcd(a1,gd));
if(a3%gd==0)
printf("%d ",a3/gd);
else
printf("%d/%d ",a3/gcd(a3,gd),gd/gcd(a3,gd));
if(a2%gd==0)
printf("%d ",a2/gd);
else
printf("%d/%d ",a2/gcd(a2,gd),gd/gcd(a2,gd));
cout<<endl;
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/acm_baihuzi/article/details/47673995