ในปัญหานี้ เราได้รับค่าสองค่า S และ N ซึ่งแทนความเร็วน้ำใน กม./ชม. และอัตราส่วนของเวลาขึ้นและลงน้ำ งานของเราคือ หาความเร็วของคนจากความเร็วน้ำและอัตราส่วนเวลาขึ้นลงน้ำ
มาดูตัวอย่างเพื่อเข้าใจปัญหา
Input
S = 5, N = 2
Output
15
วิธีแก้ปัญหา
วิธีแก้ที่ง่ายคือใช้สูตรคณิตศาสตร์สำหรับปัญหาการขี่เรือ ลองดูว่าสูตรทำงานอย่างไร
ความเร็วคน = x กม./ชม. ความเร็วน้ำ = S กม./ชม. ความเร็วคนลงน้ำ (ตามน้ำ) = (x+S) กม./ชม. ความเร็วคนขึ้นน้ำ (ต้านน้ำ) = (x-S) กม./ชม. เวลาเดินทางระยะทางลงน้ำ = T เวลาเดินทางระยะทางขึ้นน้ำ = n*T ระยะทางขึ้นน้ำ = (x - S)*n*T ระยะทางลงน้ำ = (x + S)*T เนื่องจากระยะทางเท่ากัน (x + S) * T = (x - S)*n*T x + S = nx - nS s + nS = nx - x s*(n + 1) = x(n - 1)
$$x=\frac{S*(n+1)}{(n-1)}$$
โปรแกรมแสดงการทำงานของวิธีแก้
ตัวอย่าง
#include <iostream>
using namespace std;
float calcManSpeed(float S, int n) {
return ( S * (n + 1) / (n - 1) );
}
int main() {
float S = 12;
int n = 3;
cout<<"The speed of man is "<<calcManSpeed(S, n)<<" km/hr";
return 0;
}
ผลลัพธ์
The speed of man is 24 km/hr