🧮 Nâng cao: Toán & thi Tin học trẻ
Dãy số – tính tổng 100 số hạng (một khuôn giải 8 bài)
Cần học trước: Bài 9 (lặp có số lần), Bài 19 (biến), Bài 20 (biểu thức)
Bài này dùng: biến, lặp lại có số lần, cộng dồn, danh sách, tìm quy luật dãy số, công thức tính nhanh
1. Đề bài
Cho dãy số 1, 2, 3, 4, … Em hãy dùng các lệnh trong chương trình để tính tổng của 100 số hạng đầu tiên. Kết thúc chương trình, mèo nói kết quả. (Bài 12)
💡 Đây là bài mở đầu của dạng "tính tổng dãy số" trong Hội thi Tin học trẻ. Con làm chắc Bài 12, rồi chỉ đổi 2 con số là giải được thêm 7 bài nữa trong cùng bộ đề (mục 6).
2. Chơi thử trước
Chạy ngay trên trang này, không cần mở Scratch. Bấm lá cờ xanh để bắt đầu.
Bấm cờ xanh: mèo nói tổng, bảng Danh sách trên sân khấu ghi đủ 100 số.
3. Bắt tay vào làm
- Mở scratch.mit.edu → bấm Sáng tạo (hoặc mở Scratch trên máy).
- Bấm Tập tin → Tải lên từ máy tính của bạn → chọn file vừa tải.
- Làm theo từng bước bên dưới. Xong bấm Tập tin → Lưu về máy tính.
Tạo 2 biến: Tổng, Số hạng, và 1 danh sách tên Danh sách (nhóm Các biến số → Tạo một danh sách).
💡 Biến
Tổnggiống một con heo đất: mỗi vòng mình bỏ thêm một số vào. BiếnSố hạnglà số đang cầm trên tay, mỗi vòng tăng thêm 1.
4. Làm từng bước
Bước 1 – Chuẩn bị
Khi bấm vào @greenFlag Xóa hết tất cả trong liệt kê [Danh sách v] đặt [Tổng v] thành [0] đặt [Số hạng v] thành [1]
- Tổng = 0: heo đất lúc đầu rỗng.
- Số hạng = 1: số đầu tiên của dãy.
- Xóa danh sách: nếu không, bấm cờ xanh lần hai thì danh sách có 200 số.
Bước 2 – Lặp 100 lần
lặp lại (100)
thêm phần tử (Số hạng) vào trong [Danh sách v]
thay đổi [Tổng v] một lượng (Số hạng)
thay đổi [Số hạng v] một lượng (1)
endMỗi vòng: ghi số vào sổ → bỏ số đó vào heo đất → cầm số tiếp theo.
Bước 3 – Chạy tay 4 vòng đầu
| Vòng | Cộng vào Tổng | Tổng | Số hạng (sau vòng) |
|---|---|---|---|
| Trước khi lặp | – | 0 | 1 |
| 1 | 1 | 1 | 2 |
| 2 | 2 | 3 | 3 |
| 3 | 3 | 6 | 4 |
| 4 | 4 | 10 | 5 |
Bấm Chạy 1 vòng 4 lần, so với bảng trên. Rồi thử nút đỏ để xem lỗi hay gặp:
⚠️ Lỗi hay gặp: đặt thay đổi Số hạng lên trước khối cộng vào Tổng: máy bỏ qua số 1, cộng từ 2 tới 101, và tổng sai.
Bước 4 – Mèo nói kết quả
Thả bên dưới vòng lặp:
nói (kết hợp [Tổng của 100 số hạng đầu tiên của dãy số là: ] (Tổng))
Kiểm tra chương trình của con
- Tạm đổi 100 thành 4: mèo phải nói 10, đúng như bảng chạy tay.
- Đổi lại 100 rồi so đáp số:
Xem đáp số Bài 12
1 + 2 + 3 + … + 100 = 5050
5. Đáp án
Con đã thử tự làm chưa? Bấm để xem đáp án đầy đủ
Sprite1
Khi bấm vào @greenFlag
Xóa hết tất cả trong liệt kê [Danh sách v]
đặt [Tổng v] thành [0]
đặt [Số hạng v] thành [1]
lặp lại (100)
thêm phần tử (Số hạng) vào trong [Danh sách v]
thay đổi [Tổng v] một lượng (Số hạng)
thay đổi [Số hạng v] một lượng (1)
end
nói (kết hợp [Tổng của 100 số hạng đầu tiên của dãy số là: ] (Tổng))::looks
6. Một khuôn, giải cả bộ đề
Nhìn lại chương trình Bài 12. Với các dãy cộng đều (số sau luôn hơn số trước một lượng như nhau), con giữ nguyên cả chương trình, chỉ đổi 2 con số:
Khi bấm vào @greenFlag
Xóa hết tất cả trong liệt kê [Danh sách v]
đặt [Tổng v] thành [0]
đặt [Số hạng v] thành [1] // ① số hạng đầu tiên
lặp lại (100)
thêm phần tử (Số hạng) vào trong [Danh sách v]
thay đổi [Tổng v] một lượng (Số hạng)
thay đổi [Số hạng v] một lượng (1) // ② mỗi lần tăng bao nhiêu
end
nói (kết hợp [Tổng của 100 số hạng đầu tiên của dãy số là: ] (Tổng))Tìm 2 con số thế nào?
- ① là số đứng đầu dãy.
- ② là số thứ hai trừ số thứ nhất. Con thử thêm số thứ ba trừ số thứ hai: phải ra cùng một số thì mới đúng là dãy cộng đều.
Ví dụ dãy 3, 7, 11, 15: ① = 3, ② = 7 − 3 = 4 (và 11 − 7 cũng bằng 4 ✓).
Luyện 1 – Bài 13, 14, 15
Đề: tính tổng 100 số hạng đầu tiên của mỗi dãy. Con tự tìm ① và ② trên giấy trước, rồi sửa chương trình.
| Bài | Dãy số |
|---|---|
| 13 | 2, 4, 6, 8, … |
| 14 | 3, 7, 11, 15, … |
| 15 | 6, 12, 18, 24, … |
Xem 2 con số và đáp số
| Bài | ① Số hạng đầu | ② Mỗi lần tăng | Tổng 100 số hạng |
|---|---|---|---|
| 13 | 2 | 2 | 10100 |
| 14 | 3 | 4 | 20100 |
| 15 | 6 | 6 | 30300 |
Để ý: Bài 13 gấp đôi Bài 12, Bài 15 gấp 6 lần Bài 12. Vì sao vậy? (Gợi ý: 2, 4, 6, 8 chính là 2 × 1, 2 × 2, 2 × 3, 2 × 4.)
Luyện 2 – Bài 17, 18: tính tổng và hiển thị dãy số
| Bài | Dãy số |
|---|---|
| 17 | 3, 6, 9, 12, … |
| 18 | 2, 5, 8, 11, … |
Đề bắt thêm hiển thị dãy số đó. Chương trình của con đã làm rồi: khối thêm phần tử (Số hạng) vào trong [Danh sách] ghi từng số hạng, và bảng Danh sách hiện trên sân khấu. Nếu không thấy bảng, con đánh dấu ô vuông cạnh tên Danh sách trong nhóm Các biến số.
Xem 2 con số và đáp số
| Bài | ① Số hạng đầu | ② Mỗi lần tăng | Tổng 100 số hạng | Số hạng thứ 100 |
|---|---|---|---|---|
| 17 | 3 | 3 | 15150 | 300 |
| 18 | 2 | 3 | 15050 | 299 |
Kéo bảng Danh sách xuống cuối: số cuối cùng phải là số hạng thứ 100 như trong bảng.
Luyện 3 – Bài 20: chỉ 30 số hạng
Tính tổng 30 số hạng đầu tiên của dãy 2, 4, 6, 8, …
Lần này đổi thêm chỗ thứ ba: số lần lặp. Nhớ sửa cả câu mèo nói, vì không còn là "100 số hạng".
Xem đáp số
① = 2, ② = 2, lặp lại (30). Tổng = 930.
Luyện 4 – Bài 19: người chơi tự nhập N
Cho dãy số 1, 2, 3, …, N. Viết chương trình tính tổng của dãy. Kết thúc chương trình, mèo nói "Tổng của dãy số là …".
Lần này máy chưa biết N là bao nhiêu, nên mèo phải hỏi trước.
Gợi ý
Thêm khối hỏi … và đợi sau phần chuẩn bị, và thả khối trả lời vào chỗ số lần lặp:
hỏi [N = ?] và đợi
lặp lại (trả lời)
thêm phần tử (Số hạng) vào trong [Danh sách v]
thay đổi [Tổng v] một lượng (Số hạng)
thay đổi [Số hạng v] một lượng (1)
end
nói (kết hợp [Tổng của dãy số là: ] (Tổng))Thử N = 4 (ra 10), N = 10 (ra 55), N = 100 (ra 5050).
7. Câu chuyện: cậu bé tính nhanh hơn máy
Chuyện kể rằng hồi nhỏ, nhà toán học Gauss được thầy giao cộng các số từ 1 đến 100. Cậu trả lời gần như ngay lập tức, nhờ ghép cặp:
- 1 + 100 = 101
- 2 + 99 = 101
- 3 + 98 = 101
- … có tất cả 50 cặp, cặp nào cũng bằng 101.
Vậy tổng = 50 × 101 = 5050. Viết thành công thức cho dãy 1, 2, …, N:
Tổng = N × (N + 1) / 2
Vì sao lại chia 2? Xem hai bậc thang ghép lại (thử N nhỏ cho dễ đếm):
Cách ghép cặp này dùng được cho mọi dãy cộng đều: tổng = (số đầu + số cuối) × số số hạng / 2.
8. Thử thách nâng cao
⭐ Kiểm tra bằng cách ghép cặp
Dùng cách của Gauss để tính lại Bài 14 (dãy 3, 7, 11, …, 100 số hạng) trên giấy, rồi so với máy.
Lời giải
Số hạng thứ 100 = 3 + 99 × 4 = 399. Tổng = (3 + 399) × 100 / 2 = 20100, khớp với máy.
⭐⭐ Bài 16: dãy có khoảng cách tăng dần
Cho dãy số 1, 2, 5, 10, 17, 26, 37, 50, … Viết chương trình tính tổng của 100 số hạng đầu tiên. Kết thúc chương trình, mèo nói "Tổng của dãy số là …".
Dãy này không cộng đều: 2 − 1 = 1, 5 − 2 = 3, 10 − 5 = 5… Khuôn 2 con số không còn đủ nữa.
Gợi ý
Viết các khoảng cách ra giấy: 1, 3, 5, 7, 9, … Khoảng cách cũng tăng đều, mỗi lần thêm 2. Vậy con cần thêm 1 biến nữa, tên Số tăng thêm, bắt đầu bằng 1:
lặp lại (100)
thêm phần tử (Số hạng) vào trong [Danh sách v]
thay đổi [Tổng v] một lượng (Số hạng)
thay đổi [Số hạng v] một lượng (Số tăng thêm)
thay đổi [Số tăng thêm v] một lượng (2)
endĐáp số: 328450. Trong phần Nâng cao của lớp, Bài 16 có bài riêng giải từng bước, kèm bảng chạy tay và lỗi hay gặp.
⭐⭐⭐ Đề thi thật: N tới 1 tỉ
Câu 3 đề thi Tin học trẻ Bảng A huyện Lạng Giang năm 2025: tính 1 + 2 + … + N với N có thể lớn tới 1 000 000 000 (1 tỉ), máy phải trả lời dưới 2 giây. Ví dụ: N = 5 ra 15; N = 5000 ra 12502500.
Vòng lặp 1 tỉ lần thì chạy quá lâu. Con làm sao?
Gợi ý
Dùng công thức Gauss, không cần vòng lặp:
hỏi [N = ?] và đợi đặt [Tổng v] thành (((trả lời) * ((trả lời) + (1))) / (2)) nói (Tổng)
Đề cho 60% điểm nếu chạy đúng với N ≤ 1000 (vòng lặp vẫn kịp), và 100% điểm nếu đúng cả với N tới 1 tỉ (phải dùng công thức). Đây là lúc hiểu toán giúp con lập trình giỏi hơn.
9. Ba mẹ hỏi con
- Muốn đổi từ dãy 1, 2, 3, … sang dãy 3, 7, 11, … thì con sửa những chỗ nào?
- Vì sao lúc đầu phải đặt Tổng bằng 0?
- Cậu bé Gauss cộng 1 đến 100 nhanh bằng cách nào?
Nguồn đề: Bài 12–20 trong bộ bài luyện thi Tin học trẻ "Dãy số – tính tổng" của lớp offline DucIT.vn
Con giải được bộ đề này rồi?
Phần Nâng cao trong lớp còn các dạng đề thi Tin học trẻ khác: Bài 16 dãy 1, 2, 5, 10 giải từng bước, gà và chó, chia sách, dãy số 2N, dãy 3, 6, 9 với số hạng thứ 2026, số bé hơn 250. Con nên học phần này sau Bài 20 (biến, biểu thức) trong 24 bài bám sách. Ba mẹ nhận báo cáo mỗi Chủ nhật. Học phí 1.290.000đ trả một lần, con học thử cả tuần đầu, không hợp thì hoàn 100% trong 7 ngày.