hdoj 1038 - Biker's Trip Odometer(简单数学计算)

原题链接:Problem - 1038

题目描述

Most bicycle speedometers work by using a Hall Effect sensor fastened to the front fork of the bicycle. A magnet is attached to one of the spokes on the front wheel so that it will line up with the Hall Effect switch once per revolution of the wheel. The speedometer monitors the sensor to count wheel revolutions. If the diameter of the wheel is known, the distance traveled can be easily be calculated if you know how many revolutions the wheel has made. In addition, if the time it takes to complete the revolutions is known, the average speed can also be calculated.
For this problem, you will write a program to determine the total distance traveled (in miles) and the average speed (in Miles Per Hour) given the wheel diameter, the number of revolutions and the total time of the trip. You can assume that the front wheel never leaves the ground, and there is no slipping or skidding.

输入格式

Input consists of multiple datasets, one per line, of the form:

diameter revolutions time

The diameter is expressed in inches as a floating point value. The revolutions is an integer value. The time is expressed in seconds as a floating point value. Input ends when the value of revolutions is 0 (zero).

输出格式

For each data set, print:

Trip #N: distance MPH

Of course N should be replaced by the data set number, distance by the total distance in miles (accurate to 2 decimal places) and MPH by the speed in miles per hour (accurate to 2 decimal places). Your program should not generate any output for the ending case when revolutions is 0.

Constants

For p use the value: 3.1415927.
There are 5280 feet in a mile.
There are 12 inches in a foot.
There are 60 minutes in an hour.
There are 60 seconds in a minute.
There are 201.168 meters in a furlong.

输入样例

26 1000 5
27.25 873234 3000
26 0 1000

输出样例

Trip #1: 1.29 928.20
Trip #2: 1179.86 1415.84

题意

给定车轮直径 diameter 、转数 revolutions 和总行驶时间 time ,求总行驶距离 distance(以 m i l e s {\rm miles} 为单位)和平均速度 MPH(以 m i l e s / h o u r {\rm miles/hour} 为单位)。不考虑车轮打滑等情况。

样例解释

样例 1:26 1000 5

  • 车轮直径为 26 inches,转了 1000 圈,总行驶时间 5 seconds。
  • 总行驶距离为 π × 26   i n c h e s × 1000   81681.4   i n c h e s \pi \times 26\ {\rm inches} \times 1000\ 圈 \approx 81681.4 \ {\rm inches} ,换算成 miles 约为 1.29   m i l e s 1.29 \ {\rm miles}
  • 平均速度为 1.29   m i l e s 5   s e c o n d s = 1.29   m i l e s 5 60 × 60   h o u r s 928.20   m i l e s / h o u r \dfrac{1.29\ {\rm miles}}{5\ {\rm seconds}}=\dfrac{1.29\ {\rm miles}}{\dfrac{5}{60 \times 60}\ {\rm hours}} \approx 928.20\ {\rm miles/hour}

样例 2:27.25 873234 3000

  • 车轮直径为 27.25 inches,转了 873234 圈,总行驶时间 3000 seconds。
  • 总行驶距离为 π × 27.25   i n c h e s × 873234   7.4756 × 1 0 7   i n c h e s \pi \times 27.25\ {\rm inches} \times 873234\ 圈 \approx 7.4756 \times 10^7 \ {\rm inches} ,换算成 miles 约为 1179.86   m i l e s 1179.86 \ {\rm miles}
  • 平均速度为 1179.86   m i l e s 3000   s e c o n d s = 1179.86   m i l e s 3000 60 × 60   h o u r s 1415.84   m i l e s / h o u r \dfrac{1179.86\ {\rm miles}}{3000\ {\rm seconds}}=\dfrac{1179.86\ {\rm miles}}{\dfrac{3000}{60 \times 60}\ {\rm hours}} \approx 1415.84\ {\rm miles/hour}

样例 3:26 0 1000

  • 转数为 0,代表输入结束,不用处理。

解题思路

对于每一组输入,可用下面的公式计算 distanceMPH

d i s t a n c e = π × d i a m e t e r × r e v o l u t i o n s distance = \pi \times diameter \times revolutions

M P H = d i s t a n c e t i m e MPH = \dfrac{distance}{time}

考虑到结果的单位要求,以及常数 π \pi 的取值,最终的求解公式是这样的:

d i s t a n c e = 3.1415927 × d i a m e t e r × r e v o l u t i o n s 12 × 5280 ( m i l e s ) distance = \dfrac{3.1415927 \times diameter \times revolutions}{12 \times 5280} \quad ({\rm miles})

M P H =    d i s t a n c e    t i m e 60 × 60 ( m i l e s / h o u r ) MPH = \dfrac{\ \ distance \ \ }{\dfrac{time}{60 \times 60}} \quad ({\rm miles/hour})

输出保留 2 位小数。

程序代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
    double dia, t, pi = 3.1415927;
    int re;
    int id = 0;
    while(cin >> dia >> re >> t)
    {
        if(re == 0)break;
        cout << "Trip #" << ++id << ": ";
        double dis, mph;
        dis = pi * dia * re / 12 / 5280;
        mph = dis / (t / 3600);
        printf("%.2lf %.2lf\n", dis, mph);
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/hyp19991114/article/details/105760025