ให้ M = จำนวนบรรยายทั้งหมดที่จัดไปแล้ว, N = จำนวนบรรยายที่เข้าแล้ว หาจำนวนบรรยายขั้นต่ำที่ต้องเข้าเพิ่มเพื่อให้ได้อัตราการเข้าเรียน ≥ 75%
ตัวอย่าง 1: M=32, N=20 → 16 (รวม 48 บรรยาย เข้า 36 ครั้ง = 75%)
ตัวอย่าง 2: M=14, N=4 → 26 (รวม 40 บรรยาย เข้า 30 ครั้ง = 75%)
วิธีแก้ปัญหา
วิธีที่ 1: วนลูป (O(n)) เพิ่มจำนวนบรรยายทีละ 1 จนกว่าจะได้ ≥ 75%
วิธีที่ 2: สูตรคณิตศาสตร์ (O(1))
แก้สมการ: (N + x) / (M + x) ≥ 0.75
ได้: x ≥ (0.75M - N) / 0.25
ปัดขึ้น: x = ceil((0.75M - N) / 0.25)
ตัวอย่างโค้ด C++ (สูตร O(1))
#include <iostream>
#include <cmath>
using namespace std;
int maintainAtt(int M, int N) {
int att = ceil((0.75 * M - N) / 0.25);
return att;
}
int main() {
int M = 30, N = 11;
cout << "The total number of lectures to be attended is " << maintainAtt(M, N);
return 0;
}
Output
The total number of lectures to be attended is 46