Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หาจำนวนผู้ชนะและไม่ชนะในการแข่งขัน

โจทย์: มีนักเรียน n คน บางคนได้เหรียญ (memento) บางคนได้ใบประกาศนียบัตร (certificates) อื่นๆ ไม่ได้อะไร ผู้ได้รับรางวัลเรียกว่า "ผู้ชนะ" กฎ: จำนวนใบประกาศนียบัตรต้องเป็น k เท่าของเหรียญ จำนวนผู้ชนะไม่เกิน n/2 อาจไม่มีผู้ชนะเลย หาจำนวนผู้ชนะสูงสุด แล้วหาจำนวนคนได้เหรียญ ใบประกาศนียบัตร และไม่ใช่ผู้ชนะ

Input: n=18, k=2 → Output: [3, 6, 9]

ขั้นตอนแก้

x := (n / 2) / (1 + k)
return x, (k * x), (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, k = 2;
    solve(n, k);
}

Input

8, 2

Output

3, 6, 9