Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm số người chiến thắng và người không chiến thắng khác nhau trong một cuộc thi

Giả sử chúng ta có hai số n và k, Có n học sinh trong một cuộc thi. Một số người trong số họ sẽ nhận được vật lưu niệm, một số sẽ nhận được chứng chỉ, và những người khác sẽ không nhận được bất cứ thứ gì. Ai nhận được một cái gì đó được gọi là người chiến thắng. Nhưng có một số quy tắc đếm số vật lưu niệm và giấy chứng nhận. Số lượng giấy chứng nhận phải lớn hơn chính xác k lần số lượng vật lưu niệm. Số lượng người chiến thắng không được lớn hơn n / 2. Cũng có thể là không có người chiến thắng. Chúng tôi phải xác định số lượng người chiến thắng tối đa có thể, theo các quy tắc này. Sau đó, tìm số học sinh có kỷ niệm, số học sinh có chứng chỉ và số học sinh không đạt giải.

Vì vậy, nếu đầu vào là n =18; k =2, thì đầu ra sẽ là [3, 6, 9].

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

x := (n / 2) / (1 + k)
return x, (k * x) and (n - (x + (k * x)))

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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);
}

Đầu vào

8, 2

Đầu ra

3, 6, 9