Bài tập C++ Nâng Cao : Tính số người bị nhiễm Covid-19

3 minute read

 Đề bài

Bài 1 (6 điểm): COVID-19

Khu phố nhà Mai đã bị phong tỏa do mới phát sinh một số ca nhiễm Covid-19. Có N người thuộc diện phải cách ly y tế. Để theo dõi mức độ phòng chống dịch của địa phương, cán bộ y tế đã thực hiện điều tra toàn bộ khu phố và cho kết quả là chỉ có đúng a người trong số N người này biết cách thực hiện tốt việc cách ly, những người không biết thì chắc chắn là sẽ không cách ly tốt. Do sơ suất nên cán bộ y tế chỉ ghi được danh sách b người không thực hiện tốt cách ly, danh sách này có thể chưa đầy đủ nhưng cán bộ này đảm bảo rằng những người đã biết cách thực hiện mà không có tên trong danh sách là những người đã thực hiện tốt.




Yêu cầu: Xác định số lượng tối thiểu và tối đa người đã thực hiện tốt việc cách ly.

Dữ liệu: Vào từ tệp văn bản BAIl.INP gồm ba số nguyên N, a và b (1<N<10;0<a,b<M).

Kết quả: Ghi ra tệp văn bản BAI1.OUT hai số nguyên là số lượng tối thiểu và số lượng tối đa
người thực hiện tốt việc cách ly.


Cách giải và giải thích đề.

Ta cần phân tích lại đề như sau cho dễ hiểu: Có người, trong đó có a người biết cách thực hiện tốt việc cách ly (ở đây ta phải hiểu là nhưng người biết cách thực hiện tốt cách ly thì chưa chắc đã thực hiện tốt cách ly). Cán bộ ghi được b người không thực hiện tốt cách(danh sách b người này có thể cán bộ ghi thiếu, nhưng những người biết cách thực hiện cách ly mà không có tên trong danh sách b người này thì chắc chắn họ thực hiện cách ly tốt).

- Số lượng người tối thiểu có thể thực hiện cách ly tốt:

+ Nếu a >= b thì trường hợp ít nhất có thể là cả
người không thực hiện cách ly tốt là những người biết cách thực hiện tốt việc cách ly.Chúng ta chú ý phân biệt giữa biết cách thực hiện và thực hiện là 2 cái khác nhau nhé. Như vậy trong trường hợp này đáp án min là a-b.Vì theo đè bài những người biết cách thực hiện tốt cách ly mà không có tên trong người thì sẽ thực hiện cách ly tốt.

+ nếu a<b thì cả a người này nằm trong danh sách b người. thì đáp án là có 0 người thực hiện
cách ly tốt.


Kết quả tìm min có thể thay bằng công thức sau, bằng: max (a-b,0).

-Số lượng người tối đa có thể thực hiện cách ly tốt: chúng ta biết có tối đa a người biết cách
thực hiện cách ly tốt và có tối đa nb người thực hiện cách ly tốt nếu cán bộ ghi đầy đủ b
người thực hiện cách ly tốt. giả sử kết quả bài toán là tong thì tong<= tong<= (n-b). nên suy ra tong= min(a,n-b).Ví dụ đơn giản nhé tong<=3 và tong<=6 suy ra để thoả mãn 2 điều kiện trên thì tong phải <= 3.


Code

#include <iostream>
using namespace std;
long long a,b,n,t;
int main()
{
     ios_base::sync_with_stdio(0);
    cin.tie(0);  cout.tie (0);
    freopen("BAI1.INP","r",stdin);
    freopen("BAI1.OUT","w",stdout);
   cin>>n>>a>>b;
   if(a-b<0)
   cout<<"0"<<" "<<(a,n-b);
   else      cout<<a-b<<" "<<(a,n-b);
   return 0;
}

Lời kết

Vậy là mình đã hướng dẫn xong cho bạn bài tập c++ Tính số người bị nhiễm Covid-19.Nếu có bất thì thắc mắc nào hãy để lại bên dưới phần bình luận.Chúc bạn làm việc và học tập hiệu quả.