原题链接: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
(以
为单位)和平均速度 MPH
(以
为单位)。不考虑车轮打滑等情况。
样例解释
样例 1:26 1000 5
- 车轮直径为 26 inches,转了 1000 圈,总行驶时间 5 seconds。
- 总行驶距离为 ,换算成 miles 约为 。
- 平均速度为 。
样例 2:27.25 873234 3000
- 车轮直径为 27.25 inches,转了 873234 圈,总行驶时间 3000 seconds。
- 总行驶距离为 ,换算成 miles 约为 。
- 平均速度为 。
样例 3:26 0 1000
- 转数为 0,代表输入结束,不用处理。
解题思路
对于每一组输入,可用下面的公式计算 distance
和 MPH
:
考虑到结果的单位要求,以及常数 的取值,最终的求解公式是这样的:
输出保留 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;
}