題目:夾角有多大[http://acm.hdu.edu.cn/showproblem.php?pid=2076]

2076.png

1.png
做這道題時主要是思路清晰。時與分的位置計算是不同的,首先將時鐘確定為一份,每一分到分的距離為60,那么總的格數(shù)為3600個,我們需要做的便是將分針與時針的位置表現(xiàn)在這些格數(shù)的位置。
在分中,每一分占1/60個格數(shù),故有分的格數(shù)為m/60,分到下一個分的距離是60s,故而秒計算應(yīng)為秒數(shù)s化為分,即s/60,化為格數(shù)應(yīng)為s/60/60。
而在時中,每一小時占1/12個格數(shù),而每一分每一秒也會使時針進行移動。每一分對時針的影響為1/12/60。而秒對其影響為分/60。
做到這里最繞的部分便已做完,取時針位置與分針位置差的絕對值。在將該值與360進行相乘(因?qū)r鐘總的確定為一份,一圈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);
}
}
}