ในโจทย์นี้ เราได้รับจำนวนเต็มสองจำนวนที่ให้การเริ่มต้นก่อนที่ A ให้กับ B และ C ตามลำดับในการแข่งขันวิ่ง 100 เมตร งานของเราคือการสร้าง โปรแกรมหาการเริ่มต้นก่อนในการแข่งขันวิ่งใน C++
คำอธิบายโค้ด − ที่นี่มีการเริ่มต้นก่อนที่ A ให้กับ B และ A ให้กับ C ตามลำดับในการแข่งขัน 100 เมตร เราต้องหาการเริ่มต้นก่อนสัมพัทธ์ที่ B ให้กับ C ในการแข่งขัน 100 เมตร
มาดูตัวอย่างเพื่อเข้าใจปัญหา
อินพุต
20, 28
เอาต์พุต
90
คำอธิบาย
A ให้ B เริ่มต้นก่อน 15 เมตร หมายความว่า ถ้า A วิ่งครบ 100 เมตร B จะวิ่งได้ 80 เมตร
A ให้ C เริ่มต้นก่อน 28 เมตร หมายความว่า ถ้า A วิ่งครบ 100 เมตร C จะวิ่งได้ 72 เมตร
ตอนนี้ เมื่อ B วิ่งได้ 80 เมตร C จะวิ่งได้ 72 เมตร
ถ้า B วิ่งได้ 100 เมตร C จะวิ่งได้
(72 * 100) / 80 = 90
แนวทางแก้ปัญหา
เพื่อแก้ปัญหา ให้หาระยะทางที่ B และ C วิ่งได้เมื่อ A วิ่งครบ 100 เมตร จากนั้นคำนวณระยะทางที่ C วิ่งได้เมื่อ B วิ่งครบ 100 เมตร โดยใช้สูตร −
(C * 100) / B
โปรแกรมตัวอย่างการทำงานของวิธีแก้
ตัวอย่าง
#include <iostream>
using namespace std;
int CalcHeadStart(int B, int C) {
return ( 100 - ( ( (100 - C)*100 ) / (100 - B)) ) ;
}
int main() {
int B = 12, C = 34;
cout << "Head start in a race by B to C is " << CalcHeadStart(B, C) << " meters";
return 0;
}
เอาต์พุต
Head start in a race by B to C is 25 meters