UVA 579 (13.07.20)

来源:互联网 发布:淘宝买东西扣银行卡吗 编辑:程序博客网 时间:2024/06/06 15:47

 ClockHands 

The medieval interest in mechanical contrivances is well illustrated by the development ofthe mechanical clock, the oldest of which is driven by weights and controlled by a verge, anoscillating arm engaging with a gear wheel. It dates back to 1386.

Clocks driven by springs had appeared by the mid-15th century, making it possible to con-struct more compact mechanisms and preparing the way for the portable clock.

English spring-driven pendulum clocks were first commonly kept on a small wall bracketand later on a shelf. Many bracket clocks contained a drawer to hold the winding key. Theearliest bracket clocks, made for a period after 1660, were of architectural design, with pillarsat the sides and a pediment on top.

In 17th- and 18th-century France, the table clock became an object of monumental design,the best examples of which are minor works of sculpture.

The longcase clocks (also called grandfather clocks) are tall pendulum clock enclosed in awooden case that stands upon the floor and is typically from 6 to 7.5 feet (1.8 to 2.3 m) in height.Later, the name ``grandfather clock'' became popular after the popular song "My Grandfather'sClock," written in 1876 by Henry Clay Work.


One of the first atomic clocks was an ammonia-controlled clock. It was built in 1949 at theNational Bureau of Standards, Washington, D.C.; in this clock the frequency did not vary bymore than one part in 108

Nuclear clocks are built using two clocks. The aggregate of atoms that emit the gammaradiation of precise frequency may be called the emitter clock; the group of atoms that absorbthis radiation is the absorber clock. One pair of these nuclear clocks can detect energy changesof one part in 1014 , being about 1,000 times more sensitive than the best atomic clock.

The cesium clock is the most accurate type of clock yet developed. This device makes useof transitions between the spin states of the cesium nucleus and produces a frequency whichis so regular that it has been adopted for establishing the time standard.


The history of clocks is fascinating, but unrelated to this problem. In this problem, youare asked to find the angle between the minute hand and the hour hand on a regular analogclock. Assume that the second hand, if there were one, would be pointing straight up at the12. Give all angles as the smallest positive angles. For example 9:00 is 90 degrees; not -90 or270 degrees.

Input 

The input is a list of times in the form H:M, each on their own line, with$1 \le H \le 12$and$00 \le M \le 59$.The input is terminated with the time 0:00. Note that H may be represented with1 or 2 digits (for 1-9 or 10-12, respectively);M is always represented with 2 digits(The input times are what you typically see on a digital clock).

Output 

The output displays the smallest positive angle in degrees between the hands for each time.The answer should between0 degrees and 180 degrees for all input times. Display each angleon a line by itself in the same order as the input. The output should be rounded to the nearest1/1000, i.e., three places after the decimal point should be printed.

Sample Input 

12:009:008:100:00

Sample Output 

0.00090.000175.000题意:给出一个时间求钟表上该时刻时针和分针间的角度注意点:第三组测试数据, 这本是小学学生做的题但是我居然一时糊涂, 认为第三组数据应该是180度, 忘了分针走过10分钟, 那么时针不是准确的在八点整!Ac代码: #include<stdio.h>#include<string.h>char date[10];int main() {    while(gets(date) != NULL) {        if(strcmp(date, "0:00") == 0)                break;        double H = 0;        double M = 0;        int len;        int mark = 1;        len = strlen(date);        for(int i = 0; i < len; i++) {                if(date[i] != ':' && mark == 1)                H = H * 10 + date[i] - '0';            if(date[i] == ':')                mark = 0;            if(date[i] != ':' && mark == 0)                M = M * 10 + date[i] - '0';        }        H = H * 5 + M / 12;        double degree;        if(H > M)            degree = (H - M) * 6;        else            degree = (M - H) * 6;        if(degree >= 180)            degree = 360 - degree;        printf("%.3lf\n", degree);    }    return 0;}