Xét bài toán; Tỉnh tổng bình phương các số tự nhiên từ 1 đến n, với n là một số tự nhiên lớn hơn 0. Nói cách khác, tính giá trị S = 1 + 2 + ... + (n - 1) +1)2 n2.
Em hãy xây dựng thuật toán để giải quyết bài toán trên với độ phức tạp.
1) O(n).
2) O(1).
Xét bài toán; Tỉnh tổng bình phương các số tự nhiên từ 1 đến n, với n là một số tự nhiên lớn hơn 0. Nói cách khác, tính giá trị S = 1 + 2 + ... + (n - 1) +1)2 n2.
Em hãy xây dựng thuật toán để giải quyết bài toán trên với độ phức tạp.
1) O(n).
2) O(1).
Quảng cáo
Trả lời:
1) Dùng vòng lặp từ 1 đến n để cộng từng giá trị bình phương vào biến tổng S.
2) Dùng công thức 
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Đang tải chế độ Học...
Hot: 1000+ đề thi giữa kì 1 lớp 1-12 đầy đủ các môn (Update 2026) (chỉ từ 60k). Tải ngay
Đăng ký VIP để học và luyện thi không giới hạn
Trọn bộ quyền lợi trên Vietjack, trong một tài khoản.
- Phòng luyện thi cấp tốc: ĐGNL - ĐGTD, Tốt nghiệp THPT, Ôn vào 10, Ôn vào 6, Ôn Giữa kì/Cuối kì
- Hơn 200K đề thi thử, đề minh hoạ, chính thức các năm
- Với 3tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
- Tải xuống đề thi [DOCX] với đầy đủ đáp án
- Xem hàng ngàn bài giảng đính kèm củng cố thêm kiến thức
- Bao gồm tất cả các bậc từ Tiểu học đến Đại học
- Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện
- Đăng ký ngay
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Để cắt hết tấm bìa mà không còn thừa mảnh nào thì kích thước cạnh d của hình vuông được cắt ra là ước số của x và y (x : d và y : d).
- Số lượng hình vuông ít nhất thì d phải lớn nhất, tức là: d = ƯCLN (x, y).
- Vậy kết quả của bài toán là: 
Đầu vào: Hai số nguyên x, y.
Đầu ra: Số lượng hình vuông thoả mãn.
Thuật toán thô: Tìm giá trị max{d | x : d; y : d).
– Lặp khi min(x,y)>d>1:
Nếu phát hiện x chia hết cho d và y chia hết cho d thì kết quả bài toán là: ![]()
Cải tiến:
Nhận xét: Giá trị của d chính là ước số chung lớn nhất của x và y, có thể dùng hàm có sẵn tìm ước chung lớn nhất để chương trình chạy nhanh hơn.

Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
f(x) = số lượng ước số của x.
Thuật toán thô
– Tạo hàm ((-x), đếm số lượng ước số của x.
Lặp khi 1 <<n. Nếu f(x) > f(x,) thì gán x = x (x là kết quả bài toán, ban đầu x − 1).

Cải tiến:
Nhận xét: x chia hết cho i nghĩa là x = i × j, x có hai ước là i và j. Giả sử i<j thì i < sqrt(x) . Em chỉ cần kiểm tra với i không lớn hơn căn bậc hai của x, giảm được số lần lặp. Chú ý đến trường hợp x là số chính phương thì x=ixinên x chỉ có một ước.
Cải tiến hàm f(x) như sau:
Mã giả

Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.
Đăng ký để học cùng Vietjack. Hoàn toàn miễn phí!
Bằng việc đăng ký, bạn đồng ý với Điều khoản sử dụng và Chính sách bảo mật của Vietjack.




