ในปัญหานี้ เราได้รับตัวเลข M และ N สองตัว ซึ่งแสดงถึงจำนวนชั้นเรียนทั้งหมดที่จัดจนถึงข้อมูลปัจจุบัน และจำนวนชั้นเรียนที่นักเรียนเข้าร่วมตามลำดับ งานของเราคือสร้างโปรแกรมเพื่อค้นหาจำนวนการบรรยายขั้นต่ำที่จะเข้าร่วมเพื่อรักษา 75% ใน C ++
คำอธิบายปัญหา
นี่เป็นหนึ่งในความกังวลที่ใหญ่ที่สุดของนักศึกษาที่จะต้องรักษาการเข้าเรียน 75% โปรแกรมนี้คำนวณจำนวนขั้นต่ำของการบรรยายที่นักเรียนจะเข้าร่วมเป็นประจำเพื่อให้ได้ผู้เข้าร่วม 75%
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ตัวอย่างที่ 1
ป้อนข้อมูล :M =32, N =20
ผลผลิต :16
คำอธิบาย
เพื่อให้มีผู้เข้าร่วมอย่างน้อย 75% นักเรียนต้องเข้าร่วมการบรรยายอย่างน้อย 16 ครั้ง ซึ่งจะทำให้การบรรยายทั้งหมด 48 ครั้ง และเข้าร่วมการบรรยาย 36 ครั้ง
เปอร์เซ็นต์ =36*100/48 =75%
ตัวอย่างที่ 1
ป้อนข้อมูล :M =14, N =4
ผลผลิต :26
คำอธิบาย
เพื่อให้มีผู้เข้าร่วมอย่างน้อย 75% นักเรียนต้องเข้าร่วมการบรรยายอย่างน้อย 26 ครั้ง ซึ่งจะทำให้การบรรยายทั้งหมด 40 ครั้ง และเข้าร่วมการบรรยาย 30 ครั้ง
เปอร์เซ็นต์ =30*100/40 =75%
แนวทางการแก้ปัญหา
ที่นี่ เราต้องหาจำนวนการบรรยายที่นักเรียนต้องเข้าร่วม วิธีง่ายๆ วิธีหนึ่งคือการเพิ่มหนึ่งการบรรยายทั้งสองด้าน และเมื่อการหารเท่ากับ 0.75 หรือมากกว่านั้น ให้หยุดการเพิ่มและส่งกลับค่าของตัววนซ้ำ
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <iostream> using namespace std; int maintainAtt(int M, int N) { int att = 0; while(1){ if(((N+att)*100)/(M+att) >= 75){ return att; } att++; } } int main() { int M = 23, N = 12; cout<<"The total number of lectures to be attended is "<<maintainAtt(M, N); return 0; }
ผลลัพธ์−
The total number of lectures to be attended is 21
วิธีนี้ใช้การวนซ้ำที่ทำให้เวลาซับซ้อนของคำตอบของลำดับ O(n) แต่เราทำได้ในความซับซ้อนของเวลา O(1) โดยใช้สูตรทางคณิตศาสตร์สำหรับการนับ
สูตรการบรรยายขั้นต่ำที่จะเข้าร่วมเพื่อรักษาผู้เข้าร่วมประชุม 75% คือ
$$\square\square\square\square\left(\frac{(0.75)+\square-\square}{0.25}\right)$$
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <iostream> #include <math.h> 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; }
ผลลัพธ์
The total number of lectures to be attended is 46