Mời các bạn tham khảo
Đề thi tuyển sinh lớp 10 chuyên tin tỉnh Ninh Bình năm 2023
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Mời các bạn tham khảo
Đề thi tuyển sinh lớp 10 chuyên tin tỉnh Ninh Bình năm 2023
Nhận xét: một số nguyên x có k chữ số sẽ tạo được 2 số đối
xứng, số thứ nhất có 2*k chữ số, số thứ hai có 2*k – 1 chữ số.
Ví dụ: x = 1258 sẽ
tạo được 2 số 12588521
và 1258521.
Thuật toán
Lặp số i từ 1 và tăng dần
Kiểm tra nếu
i có các chữ số tăng dần
Từ
i tạo ra 2 số đối xứng
Số
nào < N thì lấy, nếu > N thì ngừng lặp.
Tính xem trong A có bao nhiều thừa số 2, bao nhiêu thừa số 5
Tính xem trong B có bao nhiều thừa số 2, bao nhiêu thừa số 5
Từ đó suy ra A * B đã có bao nhiêu thừa số 2, bao nhiêu thừa
số 5
Để A * B * C có k chữ số 0 ở cuối, thì trong tích này phải
có ít nhất k thửa số 2, k thừa số 5
Nếu trong tích A * B chưa đủ, thiếu bao nhiều thừa số ta sẽ
lấy vào C. Từ đó suy ra cách tính C.
Ví dụ: A = 15, B = 12, k = 3
A = (3 * 5)
B = (2 * 2 * 3)
k = 3 nên cần A * B * C phải có ít nhất 3 thừa số 2, 3 thừa
số 5
A * B hiện tại có 2 thừa số 2, 1 thừa số 5, còn thiếu 1 thừa số 2, 2 thừa số 5 nên C = 2 * 5 * 5 = 50
tư tưởng tham lam
Thay vì cố
gắng tìm cách chia túi kẹo lớn thành các túi nhỏ hơn, ta sẽ ghép các túi nhỏ hơn ấy thành 1 túi lớn ban
đầu sao cho tổng chi phí là nhỏ nhất.
Chi phí khi ghép 2 túi lại với nhau
chính là tổng số kẹo của 2 túi, vì vậy, để giảm chi phí đến mức tối thiểu,
chúng ta sẽ tìm 2 túi kẹo sao cho tổng số
kẹo của 2 túi ấy là nhỏ nhất ó chọn 2 túi
kẹo ít nhất.
Cấu trúc heap
sẽ giải quyết công việc này một cách dễ dàng với độ phức tạp O(NlogN). Với mỗi
bước, chúng ta chỉ việc lấy ra 2 túi có số kẹo nhỏ nhất, ghép chúng lại sau đó
cho túi mới vào heap, lặp đến khi nào chỉ còn 1 túi duy nhất.
Chú ý cách cài đặt heap min trong c++
Dãy u[] : 1
; 3 ; 6 ; 10 ; 15 ; 21 ; 28; 36; 45; 55; 67; 79; … .
Nhận xét u[k] = 1
+ 2 + … + k = k(k+1)/2;
Nếu x = k(k +
1)/2
2x = k(k+1) Û nếu 2x là tích 2 số tự nhiên liên tiếp thì x thuộc u[]
* Cách kiểm tra
2x là tích 2 số tự nhiên liên tiếp
k*k ≤ 2x =
k*(k+1) ≤ (k+1)*(k+1).
k ≤ sqrt(2x) ≤
(k+1)
k = int(sqrt(2x))
if(k*(k+1)==2x)
return true ;
else return false ;
Duyệt qua dãy để
tìm đoạn con các phần tử thỏa đề.
Mời các bạn tham khảo
Đề thi Olympic 30.4 khối 10 môn Tin học năm 2023
Mời các bạn tham khảo
Đề thi Olympic 30.4 khối 11 môn Tin học năm 2023
Mời các bạn tham khảo
Đề thi học sinh giỏi lớp 9 môn tin học thành phố Đà Nẵng năm 2023
Xem thêm: tài liệu hướng dẫn giải chi tiết, code mẫu, chấm online Đề thi HSG9, tin học trẻ, tuyển sinh 10 chuyên tin thành phố ĐÀ NẴNG các năm
http://www.chuyentin.pro/2022/01/goi-luyen-giai-e-thi-hoc-sinh-gioi-lop.html
Mời các bạn tham khảo
Đề thi tin học trẻ bảng A vòng khu vực năm 2023 (miền Nam, Bắc)
Mời các bạn tham khảo
Đề thi tin học trẻ bảng A vòng khu vực năm 2023 (thi thử)
Mời các bạn tham khảo
Đề thi tuyển sinh lớp 10 chuyên tin tỉnh Ninh Bình năm 2023
Mời các bạn tham khảo
Đề thi tin học trẻ bảng A huyện Bình Xuyên tỉnh Vĩnh Phúc năm 2023
Mời các bạn tham khảo
Đề thi tin học trẻ bảng A huyện Đông Triều tỉnh Quảng Ninh năm 2023