Em hãy cho biết với thuật toán sau thì máy tính sẽ thực hiện bao nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu? Viết chương trình bằng ngôn ngữ Python để mô tả thuật toán đó.
B1: S <--20,n <--1:
B 2: Nếu S < 5 chuyển B4.
B3:n <-- n + 1 S <-- S - n và quay lại B2.
B4: Thông báo S và kết thúc thuật toán.
Quảng cáo
1 câu trả lời 320
Với thuật toán trên, máy tính sẽ thực hiện các vòng lặp cho đến khi giá trị của `S` nhỏ hơn 5. Trong mỗi vòng lặp, giá trị của `n` sẽ được tăng lên 1 và giá trị của `S` sẽ được giảm đi `n`. Khi giá trị của `S` nhỏ hơn 5, chương trình sẽ dừng lại và thông báo giá trị của `S`.
Để tính được số vòng lặp, ta cần tìm giá trị của `n` khi `S` đạt giá trị nhỏ hơn 5. Ta có:
```
S = 20 - 1 - 2 - 3 - … - n
```
Khi `S` đạt giá trị nhỏ hơn 5, ta có:
```
20 - 1 - 2 - 3 - … - n < 5
```
Từ đó, ta có:
```
20 - (1 + 2 + 3 + … + n) < 5
```
```
20 - (n * (n + 1) / 2) < 5
```
```
n * (n + 1) > 30
```
Ta có thể tìm được giá trị của `n` bằng cách thử từng giá trị của `n` cho đến khi thỏa mãn điều kiện trên. Tuy nhiên, ta có thể suy ra rằng giá trị của `n` sẽ không vượt quá 6 (vì nếu `n` lớn hơn 6 thì `n * (n + 1)` sẽ lớn hơn 30). Vậy, chương trình sẽ thực hiện tối đa 6 vòng lặp.
Khi kết thúc, giá trị của `S` sẽ là 2.
Đây là chương trình Python mô tả thuật toán trên:
```python
S = 20
n = 1
while S >= 5:
n += 1
S -= n
print("S =", S)
```
Chương trình sẽ in ra:
```
S = 2
```
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Hỏi từ APP VIETJACK45502
-
Hỏi từ APP VIETJACK28395
