题目:夹角有多大[http://acm.hdu.edu.cn/showproblem.php?pid=2076]
做这道题时主要是思路清晰。时与分的位置计算是不同的,首先将时钟确定为一份,每一分到分的距离为60,那么总的格数为3600个,我们需要做的便是将分针与时针的位置表现在这些格数的位置。
在分中,每一分占1/60个格数,故有分的格数为m/60,分到下一个分的距离是60s,故而秒计算应为秒数s化为分,即s/60,化为格数应为s/60/60。
而在时中,每一小时占1/12个格数,而每一分每一秒也会使时针进行移动。每一分对时针的影响为1/12/60。而秒对其影响为分/60。
做到这里最绕的部分便已做完,取时针位置与分针位置差的绝对值。在将该值与360进行相乘(因将时钟总的确定为一份,一圈360°)便可得到一个值,但题目要求在0~180°之间,故而得到该值时要进行一个对于180°的判断。同理,一圈只能有12小时,在获得时间时也要进行一个对于时的判断计算。
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
while(n-->0){
int h = scan.nextInt();
int m = scan.nextInt();
int s = scan.nextInt();
if(h>=12) h=h-12;
double fen = m/60.0+s/60.0/60.0;
double shi = h/12.0+m/12.0/60.0+s/12.0/60.0/60.0;
double time = Math.abs(fen-shi)*360;
if(time>=180) time=360-time;
int k = (int)(time);
System.out.println(k);
}
}
}