标签:
我都不知道该如何写题解了。。。 根据时间算出每根针离原点的角度大小,然后减一下即可,要注意处理钝角.
#include<bits/stdc++.h>
using namespace std;
const int tot=12*60*60;
int gcd(int a, int b)
{
if (b==0) return a;
return gcd(b, a%b);
}
void work(int a1, int b1, int a2, int b2)
{
int b=b1*b2/gcd(b1,b2),a;
a1=b/b1*a1;
a2=b/b2*a2;
b1=b;
b2=b;
a=abs(a1-a2);
int g=gcd(a,b);
if (g==0)
{
printf("0 ");
return;
}
else
{
a=a/g;
b=b/g;
}
if (b==1)
{
if (a>180) a=360-a;
printf("%d ",a);
}
else
{
if (a>180*b) a=360*b-a;
g=gcd(a,b);
a=a/g;
b=b/g;
printf("%d/%d ",a,b);
}
}
int main()
{
int T,h,m,s;
scanf("%d",&T);
while(T--)
{
scanf("%d:%d:%d",&h,&m,&s);
if (h>=12) h=h-12;
h=h*60*60+m*60+s;
m=m*60+s;
work(360*h,tot,360*m,60*60);
work(360*h,tot,360*s,60);
work(360*s,60,360*m,60*60);
printf("\n");
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/wzb-hust/p/4854805.html