Bài 4: Làm mịn dần từng bước từ thuật toán đến chương trình máy tính

Chủ đề Fcs: Giải quyết vấn đề với sự trợ giúp của máy tính – Kĩ thuật lập trình – Bài 4: Làm mịn dần từng bước từ thuật toán đến chương trình máy tính – sách bài tập trang 49 lớp 11 Khoa học máy tính – Cánh Diều, mời các em tham khảo cùng Bumbii.

Chủ đề Fcs: Giải quyết vấn đề với sự trợ giúp của máy tính – Bài 4: Làm mịn dần từng bước từ thuật toán đến chương trình máy tính

Câu FCS13

Hãy dự đoán kết quả trả về của đoạn mã giả sau, với giá trị n được cho ở đầu vào:

Trả lời:

Kết quả trả về sau cùng là: 

Câu FCS14

Hãy dự đoán chức năng của đoạn mã giả sau, với giá trị n được cho ở đầu vào:

Trả lời:

Đoạn mã giả sẽ trả về số lượng ước dương của n. Với nhận xét tương tự như bài toán kiểm tra tính nguyên tố trong sách giáo khoa, ta chỉ cần duyệt đến sqrt(n) để thống kê tất cả các cặp ước số. Ngoài ra, em phải xét riêng trường hợp số chính phương n = i x i.

Câu FCS15

Cô giáo có một tấm bìa hình chữ nhật có các kích thước là x (cm) và y (cm), (x, y là số nguyên dương). Cô giáo muốn cắt tấm bia này thành những hình vuông bằng nhau có độ dài cạnh là số nguyên (đơn vị cm) sao cho tấm bìa được cắt hết không còn thừa mảnh nào.

Yêu cầu: Cô giáo cho trước tấm bìa, em hãy xác định số hình vuông ít nhất có thể cắt được.

Dữ liệu: Nhập từ thiết bị vào chuẩn, gồm hai dòng:

  • Dòng thứ nhất chứa số nguyên dương x (x109).
  • Dòng thứ hai chứa số nguyên dương y (y109).

Kết quả: Hiển thị ở thiết bị ra chuẩn số lượng hình vuông theo yêu cầu.

Ví dụ:

Trả lờ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.

Câu FCS16

Độ đẹp của số nguyên

Sau khi nghe câu chuyện “Bàn cờ và hạt thóc” (nói về luỹ thừa của 2), Bình cảm thấy toán học thật thú vị nên cũng muốn thử làm nên một “sự tích” như vậy. Cậu lấy x hạt gạo ra và thử xếp chúng thành một hình chữ nhật trên bàn cờ vua, tức là mỗi ô chỉ chứa một hạt gạo và các ô có gạo tạo thành một hình chữ nhật. Bình định nghĩa độ đẹp của số x là số cách khác nhau để xếp x hạt gạo lên bàn cờ vua. Ví dụ, với x = 6 thì độ đẹp là 4 do ta có bốn cách tương ứng với các hình chữ nhật có kích thước là 1 × 6; 2 × 3; 3 × 2; 6 × 1. Tổng quát hơn, có thể coi độ đẹp là một hàm theo x, kí hiệu f(x). Ở đây, ta giả sử bàn cờ luôn đủ lớn (chứ không gói gọn trong kích thước 8 × 8). Ví dụ, với x 11 thì vẫn có thể xếp theo hai cách là 1 × 11 hoặc 11 × 1.

Bình thắc mắc tăng trong n số nguyên dương đầu tiên thì số có độ đẹp lớn nhất là số nào? Em hãy viết chương trình giúp Bình giải đáp thắc mắc này

Dữ liệu: Nhập từ thiết bị vào chuẩn một số nguyên dương n.

Kết quả: Đưa ra thiết bị chuẩn độ đẹp lớn nhất của n số nguyên dương đầu tiên.

Ví dụ:

Giải thích: Từ 1 đến 17 có số 12 là đẹp nhất. Số 12 có 6 hình chữ nhật có kích thước khác nhau là: 1 × 12, 2 × 6; 3 × 4; 4 × 3; 6 × 2; 12 × 1. Vậy độ đẹp lớn nhất từ 1 đến 17 là 6.

Trả lời:

f(x) = số lượng ước số của x.

Thuật toán thô:

– Tạo hàm f(-x), đếm số lượng ước số của x.

– Lặp khi 1 ≤ x ≤ n. Nếu f(x) > f(x0,) thì gán x0 = x (x0 là kết quả bài toán, ban đầu x0 = 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=i × i nên x chỉ có một ước.

Cải tiến hàm f(x) như sau:

Thuật toán tốt hơn: Ứng dụng ý tưởng của sàng nguyên tố để tính được mảng f[x] với f[x] là số lượng ước số của x.

Xem các bài giải khác: Giải Bài Tập SBT Lớp 11 Khoa Học Máy Tính Cánh Diều

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x