Câu hỏi:
17/06/2026 128
Mô tả các bước tính bằng tay phép tính luỹ thừa
theo hai chương trình trên. Cách nào nhanh hơn?
Mô tả các bước tính bằng tay phép tính luỹ thừa
theo hai chương trình trên. Cách nào nhanh hơn?
Trả lời:
Giải bởi Vietjack
Vì
1. Tính bình thường:
- Để tính bằng phương pháp bình thường, ta sẽ lặp lại việc nhân 2 với chính nó 21 lần (tức là 2* 2*...*2, lặp lại 21 lần).
Tuy nhiên, việc tính toán này sẽ rất tốn thời gian và không hiệu quả khi giá trị của số mũ lớn hơn.
2. Chia để trị:
Bước 1: Chia bài toán thành các bài toán con
Chia 11 cho 2, ta được kết quả là 5 và số dư là 1: 11 = 2 * 5 + 1
Bước 2: Giải quyết các bài toán con
Ta cần tính 2^5 để giải quyết bài toán con này. Tiếp tục áp dụng phương pháp chia để trị trên bài toán con này:
Chia 5 cho 2, ta được kết quả là 2 và số dư là 1: 5 = 2 * 2 + 1
Tiếp tục giải bài toán con tiếp theo:
Chia 2 cho 2, ta được kết quả là 1 và số dư là 0: 2 = 2 * 1 + 0
Bây giờ ta đã giải quyết được tất cả các bài toán con.
Bước 3: Tính toán kết quả
Từ bài toán con cuối cùng, ta có được: 2^1 = 2
Từ bài toán con thứ hai, ta có được: 2^2 = (2^1)^2 = 2^2 = 4
Từ bài toán con đầu tiên, ta có được: 2^5 = (2^2)^2 * 2 = 4^2 * 2 = 16 * 2 = 32
Vậy: 2^11 = 2^5 * 2^5 * 2 = 32 * 32 * 2 = 1024
Do đó, 2^11 = 1024.
Vì
1. Tính bình thường:
- Để tính bằng phương pháp bình thường, ta sẽ lặp lại việc nhân 2 với chính nó 21 lần (tức là 2* 2*...*2, lặp lại 21 lần).
Tuy nhiên, việc tính toán này sẽ rất tốn thời gian và không hiệu quả khi giá trị của số mũ lớn hơn.
2. Chia để trị:
Bước 1: Chia bài toán thành các bài toán con
Chia 11 cho 2, ta được kết quả là 5 và số dư là 1: 11 = 2 * 5 + 1
Bước 2: Giải quyết các bài toán con
Ta cần tính 2^5 để giải quyết bài toán con này. Tiếp tục áp dụng phương pháp chia để trị trên bài toán con này:
Chia 5 cho 2, ta được kết quả là 2 và số dư là 1: 5 = 2 * 2 + 1
Tiếp tục giải bài toán con tiếp theo:
Chia 2 cho 2, ta được kết quả là 1 và số dư là 0: 2 = 2 * 1 + 0
Bây giờ ta đã giải quyết được tất cả các bài toán con.
Bước 3: Tính toán kết quả
Từ bài toán con cuối cùng, ta có được: 2^1 = 2
Từ bài toán con thứ hai, ta có được: 2^2 = (2^1)^2 = 2^2 = 4
Từ bài toán con đầu tiên, ta có được: 2^5 = (2^2)^2 * 2 = 4^2 * 2 = 16 * 2 = 32
Vậy: 2^11 = 2^5 * 2^5 * 2 = 32 * 32 * 2 = 1024
Do đó, 2^11 = 1024.
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Viết chương trình không đệ quy cho bài toán tìm kiếm nhị phần mở rộng trên.
Viết chương trình không đệ quy cho bài toán tìm kiếm nhị phần mở rộng trên.
Câu 2:
Bài toán tìm vùng chỉ số của dãy đã sắp xếp.
Thiết lập thuật toán chia để trị để giải bài toán sau: Cho trước dãy A gồm n phần tử đã được sắp xếp theo thứ tự tăng dần, ví dụ:
A= [1, 2, 3, 3, 4, 4, 4, 5, 6, 6]
Cho trước giá trị K, cần tìm ra vùng chỉ số gồm các phần tử bằng K. Chương trình cần trả về hai chỉ số start, end là vị trí bắt đầu và kết thúc gồm toàn các giá trị K. Nếu không tìm thấy K thì phải trả về -1, -1.
Trong ví dụ trên, nếu K = 4 thì cần trả về hai chỉ số 4, 6.
Bài toán tìm vùng chỉ số của dãy đã sắp xếp.
Thiết lập thuật toán chia để trị để giải bài toán sau: Cho trước dãy A gồm n phần tử đã được sắp xếp theo thứ tự tăng dần, ví dụ:
A= [1, 2, 3, 3, 4, 4, 4, 5, 6, 6]
Cho trước giá trị K, cần tìm ra vùng chỉ số gồm các phần tử bằng K. Chương trình cần trả về hai chỉ số start, end là vị trí bắt đầu và kết thúc gồm toàn các giá trị K. Nếu không tìm thấy K thì phải trả về -1, -1.
Trong ví dụ trên, nếu K = 4 thì cần trả về hai chỉ số 4, 6.
Câu 3:
Xây dựng thuật toán cho bài toán sau: Cho trước dãy các số đã được sắp xếp tăng dần. Với giá trị K cho trước cần tìm phần tử của dãy gốc có giá trị gần với K nhất.
Xây dựng thuật toán cho bài toán sau: Cho trước dãy các số đã được sắp xếp tăng dần. Với giá trị K cho trước cần tìm phần tử của dãy gốc có giá trị gần với K nhất.
Câu 4:
Nêu những điểm khác biệt của chương trình trên với chương trình tìm kiếm nhị phân đã biết
Nêu những điểm khác biệt của chương trình trên với chương trình tìm kiếm nhị phân đã biết
Câu 5:
Hãy thiết lập thuật toán và chương trình tính luỹ thừa với a là số bất kì khác 0, n là số nguyên không âm.
Hãy thiết lập thuật toán và chương trình tính luỹ thừa với a là số bất kì khác 0, n là số nguyên không âm.
Câu 8:
Trong bài học này em sẽ thiết kế lời giải cho hai bài toán sau:
1. Bài toán tính luỹ thừa exp(a, n) = với a là số bất kì (khác 0), n là số nguyên không âm, ở đây được hiểu là tích của n lần giá trị a an = a × a × ... × a (n lần).
2. Ban giám hiệu nhà trường cần tìm một bạn lớp em có chiều cao đúng bằng 1,7 m hoặc gần với chiều cao đó nhất để tham gia tập đội hình thể thao.
Với hai bài toán trên em sẽ thực hiện như thế nào?
Trong bài học này em sẽ thiết kế lời giải cho hai bài toán sau:
1. Bài toán tính luỹ thừa exp(a, n) = với a là số bất kì (khác 0), n là số nguyên không âm, ở đây được hiểu là tích của n lần giá trị a an = a × a × ... × a (n lần).
2. Ban giám hiệu nhà trường cần tìm một bạn lớp em có chiều cao đúng bằng 1,7 m hoặc gần với chiều cao đó nhất để tham gia tập đội hình thể thao.
Với hai bài toán trên em sẽ thực hiện như thế nào?
Câu 9:
Tìm cách thiết lập thuật toán tính theo phương pháp chia để trị nhưng không sử dụng đệ quy.
Tìm cách thiết lập thuật toán tính theo phương pháp chia để trị nhưng không sử dụng đệ quy.
Câu 10:
Viết chương trình đo thời gian thực chạy để so sánh hai phương án của bài toán.
Viết chương trình đo thời gian thực chạy để so sánh hai phương án của bài toán.
