สมมติว่าเรามีตัวเลขสองตัว n และ k มีนักเรียน n คนอยู่ในการแข่งขัน บางคนจะได้รับของที่ระลึก บางคนจะได้รับใบรับรอง และคนอื่น ๆ จะไม่ได้รับอะไรเลย ผู้ที่ได้รับบางสิ่งบางอย่างเรียกว่าผู้ชนะ แต่มีกฎเกณฑ์บางประการในการนับจำนวนของที่ระลึกและใบรับรอง จำนวนใบรับรองต้องมากกว่าจำนวนของที่ระลึกถึง k เท่า จำนวนผู้ชนะต้องไม่เกิน n/2 นอกจากนี้ยังอาจไม่มีผู้ชนะ เราต้องระบุจำนวนผู้ชนะสูงสุดตามกฎเหล่านี้ จากนั้นหาจำนวนนักเรียนพร้อมของที่ระลึก จำนวนนักเรียนที่มีใบรับรอง และจำนวนนักเรียนที่ไม่เป็นผู้ชนะ
ดังนั้น ถ้าอินพุตเป็นเหมือน n =18; k =2 แล้วผลลัพธ์จะเป็น [3, 6, 9]
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
x := (n / 2) / (1 + k) return x, (k * x) and (n - (x + (k * x)))
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; void solve(int n, int k){ int x = (n / 2) / (1 + k); cout << x << ", " << (k * x) << ", " << (n - (x + (k * x))); } int main(){ int n = 18; int k = 2; solve(n, k); }
อินพุต
8, 2
ผลลัพธ์
3, 6, 9