UVa 579 - Clock Hands 發表於 2017-03-12 | 分類於 Online Judge | 題目連結:UVa 579 - Clock Hands 解法1直接算角度相減,輸出小於等於180度角的部分 (0.030s) 12345678910111213141516#include <stdio.h>#include <math.h>int main() { int h, m; float ang1, ang2, ans; while (scanf("%d:%d", &h, &m), h || m) { ang1 = h * 30 + m * 0.5; ang2 = m * 6; ans = fabs(ang1 - ang2); if (ans > 180) ans = 360 - ans; printf("%.3f\n", ans); } return 0;} 解法2直接建table做查找 (0.000s) 12345678910111213141516171819202122232425#include <stdio.h>char table[13][60][8] = { {"0.000", "5.500", "11.000", "16.500", "22.000", "27.500", "33.000", "38.500", "44.000", "49.500", "55.000", "60.500", "66.000", "71.500", "77.000", "82.500", "88.000", "93.500", "99.000", "104.500", "110.000", "115.500", "121.000", "126.500", "132.000", "137.500", "143.000", "148.500", "154.000", "159.500", "165.000", "170.500", "176.000", "178.500", "173.000", "167.500", "162.000", "156.500", "151.000", "145.500", "140.000", "134.500", "129.000", "123.500", "118.000", "112.500", "107.000", "101.500", "96.000", "90.500", "85.000", "79.500", "74.000", "68.500", "63.000", "57.500", "52.000", "46.500", "41.000", "35.500"}, {"30.000", "24.500", "19.000", "13.500", "8.000", "2.500", "3.000", "8.500", "14.000", "19.500", "25.000", "30.500", "36.000", "41.500", "47.000", "52.500", "58.000", "63.500", "69.000", "74.500", "80.000", "85.500", "91.000", "96.500", "102.000", "107.500", "113.000", "118.500", "124.000", "129.500", "135.000", "140.500", "146.000", "151.500", "157.000", "162.500", "168.000", "173.500", "179.000", "175.500", "170.000", "164.500", "159.000", "153.500", "148.000", "142.500", "137.000", "131.500", "126.000", "120.500", "115.000", "109.500", "104.000", "98.500", "93.000", "87.500", "82.000", "76.500", "71.000", "65.500"}, {"60.000", "54.500", "49.000", "43.500", "38.000", "32.500", "27.000", "21.500", "16.000", "10.500", "5.000", "0.500", "6.000", "11.500", "17.000", "22.500", "28.000", "33.500", "39.000", "44.500", "50.000", "55.500", "61.000", "66.500", "72.000", "77.500", "83.000", "88.500", "94.000", "99.500", "105.000", "110.500", "116.000", "121.500", "127.000", "132.500", "138.000", "143.500", "149.000", "154.500", "160.000", "165.500", "171.000", "176.500", "178.000", "172.500", "167.000", "161.500", "156.000", "150.500", "145.000", "139.500", "134.000", "128.500", "123.000", "117.500", "112.000", "106.500", "101.000", "95.500"}, {"90.000", "84.500", "79.000", "73.500", "68.000", "62.500", "57.000", "51.500", "46.000", "40.500", "35.000", "29.500", "24.000", "18.500", "13.000", "7.500", "2.000", "3.500", "9.000", "14.500", "20.000", "25.500", "31.000", "36.500", "42.000", "47.500", "53.000", "58.500", "64.000", "69.500", "75.000", "80.500", "86.000", "91.500", "97.000", "102.500", "108.000", "113.500", "119.000", "124.500", "130.000", "135.500", "141.000", "146.500", "152.000", "157.500", "163.000", "168.500", "174.000", "179.500", "175.000", "169.500", "164.000", "158.500", "153.000", "147.500", "142.000", "136.500", "131.000", "125.500"}, {"120.000", "114.500", "109.000", "103.500", "98.000", "92.500", "87.000", "81.500", "76.000", "70.500", "65.000", "59.500", "54.000", "48.500", "43.000", "37.500", "32.000", "26.500", "21.000", "15.500", "10.000", "4.500", "1.000", "6.500", "12.000", "17.500", "23.000", "28.500", "34.000", "39.500", "45.000", "50.500", "56.000", "61.500", "67.000", "72.500", "78.000", "83.500", "89.000", "94.500", "100.000", "105.500", "111.000", "116.500", "122.000", "127.500", "133.000", "138.500", "144.000", "149.500", "155.000", "160.500", "166.000", "171.500", "177.000", "177.500", "172.000", "166.500", "161.000", "155.500"}, {"150.000", "144.500", "139.000", "133.500", "128.000", "122.500", "117.000", "111.500", "106.000", "100.500", "95.000", "89.500", "84.000", "78.500", "73.000", "67.500", "62.000", "56.500", "51.000", "45.500", "40.000", "34.500", "29.000", "23.500", "18.000", "12.500", "7.000", "1.500", "4.000", "9.500", "15.000", "20.500", "26.000", "31.500", "37.000", "42.500", "48.000", "53.500", "59.000", "64.500", "70.000", "75.500", "81.000", "86.500", "92.000", "97.500", "103.000", "108.500", "114.000", "119.500", "125.000", "130.500", "136.000", "141.500", "147.000", "152.500", "158.000", "163.500", "169.000", "174.500"}, {"180.000", "174.500", "169.000", "163.500", "158.000", "152.500", "147.000", "141.500", "136.000", "130.500", "125.000", "119.500", "114.000", "108.500", "103.000", "97.500", "92.000", "86.500", "81.000", "75.500", "70.000", "64.500", "59.000", "53.500", "48.000", "42.500", "37.000", "31.500", "26.000", "20.500", "15.000", "9.500", "4.000", "1.500", "7.000", "12.500", "18.000", "23.500", "29.000", "34.500", "40.000", "45.500", "51.000", "56.500", "62.000", "67.500", "73.000", "78.500", "84.000", "89.500", "95.000", "100.500", "106.000", "111.500", "117.000", "122.500", "128.000", "133.500", "139.000", "144.500"}, {"150.000", "155.500", "161.000", "166.500", "172.000", "177.500", "177.000", "171.500", "166.000", "160.500", "155.000", "149.500", "144.000", "138.500", "133.000", "127.500", "122.000", "116.500", "111.000", "105.500", "100.000", "94.500", "89.000", "83.500", "78.000", "72.500", "67.000", "61.500", "56.000", "50.500", "45.000", "39.500", "34.000", "28.500", "23.000", "17.500", "12.000", "6.500", "1.000", "4.500", "10.000", "15.500", "21.000", "26.500", "32.000", "37.500", "43.000", "48.500", "54.000", "59.500", "65.000", "70.500", "76.000", "81.500", "87.000", "92.500", "98.000", "103.500", "109.000", "114.500"}, {"120.000", "125.500", "131.000", "136.500", "142.000", "147.500", "153.000", "158.500", "164.000", "169.500", "175.000", "179.500", "174.000", "168.500", "163.000", "157.500", "152.000", "146.500", "141.000", "135.500", "130.000", "124.500", "119.000", "113.500", "108.000", "102.500", "97.000", "91.500", "86.000", "80.500", "75.000", "69.500", "64.000", "58.500", "53.000", "47.500", "42.000", "36.500", "31.000", "25.500", "20.000", "14.500", "9.000", "3.500", "2.000", "7.500", "13.000", "18.500", "24.000", "29.500", "35.000", "40.500", "46.000", "51.500", "57.000", "62.500", "68.000", "73.500", "79.000", "84.500"}, {"90.000", "95.500", "101.000", "106.500", "112.000", "117.500", "123.000", "128.500", "134.000", "139.500", "145.000", "150.500", "156.000", "161.500", "167.000", "172.500", "178.000", "176.500", "171.000", "165.500", "160.000", "154.500", "149.000", "143.500", "138.000", "132.500", "127.000", "121.500", "116.000", "110.500", "105.000", "99.500", "94.000", "88.500", "83.000", "77.500", "72.000", "66.500", "61.000", "55.500", "50.000", "44.500", "39.000", "33.500", "28.000", "22.500", "17.000", "11.500", "6.000", "0.500", "5.000", "10.500", "16.000", "21.500", "27.000", "32.500", "38.000", "43.500", "49.000", "54.500"}, {"60.000", "65.500", "71.000", "76.500", "82.000", "87.500", "93.000", "98.500", "104.000", "109.500", "115.000", "120.500", "126.000", "131.500", "137.000", "142.500", "148.000", "153.500", "159.000", "164.500", "170.000", "175.500", "179.000", "173.500", "168.000", "162.500", "157.000", "151.500", "146.000", "140.500", "135.000", "129.500", "124.000", "118.500", "113.000", "107.500", "102.000", "96.500", "91.000", "85.500", "80.000", "74.500", "69.000", "63.500", "58.000", "52.500", "47.000", "41.500", "36.000", "30.500", "25.000", "19.500", "14.000", "8.500", "3.000", "2.500", "8.000", "13.500", "19.000", "24.500"}, {"30.000", "35.500", "41.000", "46.500", "52.000", "57.500", "63.000", "68.500", "74.000", "79.500", "85.000", "90.500", "96.000", "101.500", "107.000", "112.500", "118.000", "123.500", "129.000", "134.500", "140.000", "145.500", "151.000", "156.500", "162.000", "167.500", "173.000", "178.500", "176.000", "170.500", "165.000", "159.500", "154.000", "148.500", "143.000", "137.500", "132.000", "126.500", "121.000", "115.500", "110.000", "104.500", "99.000", "93.500", "88.000", "82.500", "77.000", "71.500", "66.000", "60.500", "55.000", "49.500", "44.000", "38.500", "33.000", "27.500", "22.000", "16.500", "11.000", "5.500"}, {"0.000", "5.500", "11.000", "16.500", "22.000", "27.500", "33.000", "38.500", "44.000", "49.500", "55.000", "60.500", "66.000", "71.500", "77.000", "82.500", "88.000", "93.500", "99.000", "104.500", "110.000", "115.500", "121.000", "126.500", "132.000", "137.500", "143.000", "148.500", "154.000", "159.500", "165.000", "170.500", "176.000", "178.500", "173.000", "167.500", "162.000", "156.500", "151.000", "145.500", "140.000", "134.500", "129.000", "123.500", "118.000", "112.500", "107.000", "101.500", "96.000", "90.500", "85.000", "79.500", "74.000", "68.500", "63.000", "57.500", "52.000", "46.500", "41.000", "35.500"}};int main() { int h, m; while (scanf("%d:%d", &h, &m), h || m) puts(table[h][m]); return 0;}