Bài 5.5. Mô Phỏng Dân Số Sinh Vật Biến Đổi - [Độ khó: Khó]
Bài 5.5. Mô Phỏng Dân Số Sinh Vật Biến Đổi - [Độ khó: Khó]
Trong một dự án nghiên cứu sinh học, bạn được yêu cầu mô phỏng sự biến đổi dân số của một loài sinh vật đặc biệt. Loài sinh vật này có tốc độ sinh sản nhanh nhưng cũng dễ bị đột biến và chết đi.
Quy luật thay đổi dân số hàng ngày như sau:
- Sinh sản: Mỗi sinh vật hiện có sẽ sinh ra
P
sinh vật con. (Ví dụ: nếu có 10 sinh vật vàP=2
, sẽ có 20 sinh vật con được sinh ra, tổng cộng là 30 sinh vật). - Đột biến và Tử vong: Sau khi quá trình sinh sản kết thúc trong ngày,
Q
phần trăm (Q%
) của TỔNG DÂN SỐ HIỆN TẠI (sau khi sinh sản) sẽ đột biến và chết. Số sinh vật chết được làm tròn xuống số nguyên gần nhất.
Bạn cần mô phỏng sự thay đổi dân số trong D
ngày. Nếu dân số giảm xuống 0 hoặc âm tại bất kỳ thời điểm nào, toàn bộ loài sẽ tuyệt chủng và quá trình mô phỏng dừng lại.
INPUT FORMAT
Dòng đầu tiên chứa bốn số nguyên N_initial, D, P, Q
cách nhau bởi dấu cách.
N_initial
(0 <= N_initial <= 1,000,000): Dân số ban đầu.D
(0 <= D <= 1,000,000): Số ngày mô phỏng.P
(0 <= P <= 100): Số sinh vật con mỗi sinh vật hiện có.Q
(0 <= Q <= 100): Phần trăm dân số đột biến và chết mỗi ngày.
OUTPUT FORMAT
In ra một số nguyên duy nhất là dân số cuối cùng sau D
ngày, hoặc 0
nếu loài đã tuyệt chủng.
Đảm bảo sử dụng kiểu dữ liệu long long
cho dân số để tránh tràn số, vì dân số có thể tăng rất nhanh.
Ví dụ:
Input:
100 2 1 10
Output:
243
Giải thích:
N_initial = 100
,D = 2
,P = 1
,Q = 10
.
Ngày 1:
- Dân số ban đầu:
100
. - Sinh sản: Mỗi sinh vật sinh ra
P=1
con. Tổng dân số sau sinh sản:100 * (1 + 1) = 200
. - Đột biến và Tử vong:
10%
của200
chết. Số chết =(200 * 10) / 100 = 20
. - Dân số cuối ngày 1:
200 - 20 = 180
.
Ngày 2:
- Dân số đầu ngày:
180
. - Sinh sản: Mỗi sinh vật sinh ra
P=1
con. Tổng dân số sau sinh sản:180 * (1 + 1) = 360
. - Đột biến và Tử vong:
10%
của360
chết. Số chết =(360 * 10) / 100 = 36
. - Dân số cuối ngày 2:
360 - 36 = 324
.
Sau 2 ngày, dân số còn lại là 324
.
The sample output 243
is still confusing for my calculation.
Let's check the sample calculation for 243
.
Day 1: 100 * (1+1) = 200
. 200 * 0.9 = 180
. (This is consistent)
Day 2: 180 * (1+1) = 360
. 360 * 0.9 = 324
. (Consistent).
So my calculation leads to 324
.
How could 243
be achieved?
If it's N_initial * (1+P-Q/100)^D
?
100 * (1 + 1 - 0.1)^2 = 100 * (1.9)^2 = 100 * 3.61 = 361
. No.
Perhaps the percentage applies differently.
N_initial = 100, D=2, P=1, Q=10
If P
is total new, then 100 + 100*1 = 200
. Then 200 - (200*10/100) = 180
.
If P
is x
times original population, then 100 + 100*1 = 200
.
What if the P
new organisms are per 100 or something? No, "P new organisms are born per existing organism" is clear.
"Q percentage of the total population at the end of the day (after reproduction) mutates and dies." This is what I followed.
Let's assume the problem means "Q% of P new organisms die and Q% of original population also dies". This can get too complex.
The most standard interpretation for "Q percent of TOTAL population dies" is current_pop * (1 + P) * (1 - Q/100)
.
100 * (1+1) * (1 - 10/100) = 100 * 2 * 0.9 = 180
.
Next day: 180 * 2 * 0.9 = 324
.
I suspect the example output is incorrect or based on a slightly different rule not explicitly stated.
I will make the explanation correct for 324
and use 324
as the output.
Ví dụ: Input:
100 2 1 10
Output:
324
Giải thích:
N_initial = 100
,D = 2
,P = 1
,Q = 10
.
Ngày 1:
- Dân số đầu ngày:
100
. - Bước 1: Sinh sản: Mỗi sinh vật sinh ra
P=1
con. Dân số tăng lên100 + (100 * 1) = 200
. - Bước 2: Đột biến và Tử vong:
Q=10%
của dân số hiện tại (200
) chết. Số chết =(200 * 10) / 100 = 20
. - Dân số cuối ngày 1:
200 - 20 = 180
.
Ngày 2:
- Dân số đầu ngày:
180
. - Bước 1: Sinh sản: Dân số tăng lên
180 + (180 * 1) = 360
. - Bước 2: Đột biến và Tử vong:
Q=10%
của dân số hiện tại (360
) chết. Số chết =(360 * 10) / 100 = 36
. - Dân số cuối ngày 2:
360 - 36 = 324
.
Sau 2 ngày, dân số còn lại là 324
. Nếu dân số trở thành 0 hoặc âm tại bất kỳ thời điểm nào trong quá trình tính toán, quá trình mô phỏng sẽ dừng lại và kết quả là 0
.
Comments