Cấp số cộng, cấp số nhân
Nhiều bài thi đưa ra một dãy số “cứ tăng đều” hoặc “cứ gấp lên” rồi hỏi số hạng thứ 2026, tổng của 1018 số hạng đầu… Cộng dần bằng vòng lặp thì quá chậm khi n lớn. Bài này cho các bạn công thức để tính ngay.
Cấp số cộng
Phần tiêu đề “Cấp số cộng”Cấp số cộng là dãy mà hai số liền nhau luôn hơn kém nhau cùng một số d (gọi là công sai). Ví dụ 3, 7, 11, 15, … có d = 4.
Số hạng thứ n: từ số đầu a1, đi thêm n - 1 bước, mỗi bước cộng d:
an = a1 + (n - 1) × d
Số hạng thứ 2026 của dãy 3, 7, 11, … là 3 + 2025 × 4 = 8103.
Số số hạng: dãy từ a đến b, bước d, có (b - a) / d + 1 số. Ví dụ 7, 10, 13, …, 2026 có 2019 / 3 + 1 = 674 số. Lưu ý cộng 1: từ 1 đến 10 có 10 số chứ không phải 9 (bài toán “trồng cây” quen thuộc).
Tổng n số hạng: ghép số đầu với số cuối, số thứ hai với số áp cuối… Mỗi cặp có tổng bằng a1 + an, có n / 2 cặp:
Sn = n × (a1 + an) / 2
| Cặp | 1 + 100 | 2 + 99 | 3 + 98 | … | 50 + 51 |
|---|---|---|---|---|---|
| Tổng | 101 | 101 | 101 | … | 101 |
1 + 2 + … + 100 = 50 cặp × 101 = 5050.
a1, d, n = 3, 4, 2026an = a1 + (n - 1) * dtong = n * (a1 + an) // 2 # n * (a1 + an) luôn chẵnprint(an, tong) # 8103 8211378#include <iostream>using namespace std;
int main() { long long a1 = 3, d = 4, n = 2026; long long an = a1 + (n - 1) * d; long long tong = n * (a1 + an) / 2; // n * (a1 + an) luôn chẵn cout << an << " " << tong << endl; // 8103 8211378 return 0;}Lưu ý: n × (a1 + an) luôn là số chẵn (vì a1 + an =
2a1 + (n - 1)d, nếu n lẻ thì n - 1 chẵn), nên chia 2 không bị mất phần lẻ. Nhưng
với n tới 109, tích có thể vượt long long: khi đó chia 2 trước cho thừa số chẵn
(như bài tổng từ 1 đến n).
Cấp số nhân
Phần tiêu đề “Cấp số nhân”Cấp số nhân là dãy mà mỗi số bằng số trước nhân với cùng một số q (gọi là công bội). Ví dụ 3, 6, 12, 24, … có q = 2.
- Số hạng thứ n: an = a1 × qn - 1.
- Tổng n số hạng (q khác 1): Sn = a1 × (qn - 1) / (q - 1).
Vì sao? Viết S = 1 + 2 + 4 + … + 2n - 1. Nhân đôi: 2S = 2 + 4 + … + 2n. Trừ hai dòng, hầu hết các số triệt tiêu: 2S - S = 2n - 1.
Cấp số nhân tăng rất nhanh: 260 đã vượt 1018. Vì vậy:
- Hỏi “sau bao nhiêu bước thì vượt n” chỉ cần vòng lặp khoảng 60 lần.
- Hỏi số hạng thứ 1018 thì phải lấy dư và dùng lũy thừa nhanh.
Một số tổng hay gặp
Phần tiêu đề “Một số tổng hay gặp”| Tổng | Công thức | n = 10 |
|---|---|---|
| 1 + 2 + … + n | n(n + 1) / 2 | 55 |
| 1 + 3 + 5 + … + (2n - 1) | n2 | 100 |
| 12 + 22 + … + n2 | n(n + 1)(2n + 1) / 6 | 385 |
| 13 + 23 + … + n3 | [n(n + 1) / 2]2 | 3025 |
| 1 × 2 + 2 × 3 + … + n(n + 1) | n(n + 1)(n + 2) / 3 | 440 |
Không cần học thuộc: khi quên, viết vòng lặp tính với n nhỏ để kiểm tra công thức.
Luyện tập
Phần tiêu đề “Luyện tập”Gồm 24 bài, chia thành 4 nhóm từ dễ đến khó. Mỗi bài có một dữ liệu kiểm tra: các bạn chạy chương trình của mình với dữ liệu đó rồi so với đáp số.
Nhóm 1. Cấp số cộng
Phần tiêu đề “Nhóm 1. Cấp số cộng”Bài 1. Số hạng thứ n
Phần tiêu đề “Bài 1. Số hạng thứ n”Cấp số cộng có số hạng đầu a, công sai d (|a|, |d| ≤ 109). Nhập a, d, n (n ≤ 109), in ra số hạng thứ n.
Ví dụ: nhập 3 4 5 thì in ra 19.
Kiểm tra: nhập 3 4 2026.
Bài 2. Tổng n số hạng
Phần tiêu đề “Bài 2. Tổng n số hạng”Cấp số cộng có số hạng đầu a, công sai d (0 ≤ a, d ≤ 103). Nhập a, d, n (n ≤ 109), in ra tổng n số hạng đầu.
Ví dụ: nhập 1 1 100 thì in ra 5050.
Kiểm tra: nhập 1 1 1000000000.
Bài 3. Đếm số hạng
Phần tiêu đề “Bài 3. Đếm số hạng”Dãy a, a + d, a + 2d, …, b (d ≥ 1, b - a chia hết cho d, các số ≤ 1018). Nhập a, b, d, in ra số số hạng của dãy.
Ví dụ: nhập 1 10 1 thì in ra 10.
Kiểm tra: nhập 7 2026 3.
Bài 4. Tổng các số lẻ
Phần tiêu đề “Bài 4. Tổng các số lẻ”Nhập n (n ≤ 109). In ra tổng n số lẻ đầu tiên 1 + 3 + 5 + … + (2n - 1).
Ví dụ: nhập 4 thì in ra 16.
Kiểm tra: nhập 2026.
Bài 5. Tổng các bội số trong đoạn
Phần tiêu đề “Bài 5. Tổng các bội số trong đoạn”Nhập a, b, k (1 ≤ a ≤ b ≤ 109, k ≤ 109). In ra tổng các số chia hết cho k trong đoạn từ a đến b (in 0 nếu không có số nào).
Ví dụ: nhập 10 99 3 thì in ra 1665.
Kiểm tra: nhập 1 1000000000 7.
Bài 6. Số chữ số để đánh số trang
Phần tiêu đề “Bài 6. Số chữ số để đánh số trang”Quyển sách có n trang (n ≤ 1017), đánh số từ 1. Cần viết tất cả bao nhiêu chữ số?
Ví dụ: nhập 100 thì in ra 192.
Kiểm tra: nhập 2026.
Bài 7. Chữ số thứ k
Phần tiêu đề “Bài 7. Chữ số thứ k”Viết liền các số tự nhiên 1, 2, 3, … thành dãy 123456789101112131415… Nhập k (k ≤ 1018), in ra chữ số thứ k của dãy.
Ví dụ: nhập 11 thì in ra 0.
Kiểm tra: nhập 2026.
Nhóm 2. Cấp số nhân
Phần tiêu đề “Nhóm 2. Cấp số nhân”Bài 8. Số hạng thứ n của cấp số nhân
Phần tiêu đề “Bài 8. Số hạng thứ n của cấp số nhân”Cấp số nhân có số hạng đầu a, công bội q (a, q ≤ 109). Nhập a, q, n (n ≤ 1018), in ra số hạng thứ n chia lấy dư cho 109 + 7.
Ví dụ: nhập 3 2 5 thì in ra 48.
Kiểm tra: nhập 3 2 1000000000000000000.
Bài 9. Tổng các lũy thừa của 2
Phần tiêu đề “Bài 9. Tổng các lũy thừa của 2”Nhập n (1 ≤ n ≤ 62). In ra 1 + 2 + 4 + … + 2n - 1.
Ví dụ: nhập 4 thì in ra 15.
Kiểm tra: nhập 62.
Bài 10. Vi khuẩn nhân đôi
Phần tiêu đề “Bài 10. Vi khuẩn nhân đôi”Ban đầu có 1 con vi khuẩn, cứ mỗi giờ số vi khuẩn gấp đôi. Nhập n (n ≤ 1018). Sau ít nhất bao nhiêu giờ thì số vi khuẩn lớn hơn hoặc bằng n?
Ví dụ: nhập 100 thì in ra 7.
Kiểm tra: nhập 1000000000000000000.
Bài 11. Hạt gạo trên bàn cờ
Phần tiêu đề “Bài 11. Hạt gạo trên bàn cờ”Đặt 1 hạt gạo vào ô thứ nhất, 2 hạt vào ô thứ hai, 4 hạt vào ô thứ ba, … (mỗi ô gấp đôi ô trước). Nhập n (1 ≤ n ≤ 64), in ra tổng số hạt gạo trên n ô đầu.
Ví dụ: nhập 3 thì in ra 7.
Kiểm tra: nhập 64.
Bài 12. Tổng cấp số nhân
Phần tiêu đề “Bài 12. Tổng cấp số nhân”Nhập a, q, n (1 ≤ a ≤ 100, 2 ≤ q ≤ 10, n ≤ 15). In ra tổng a + a × q + a × q2 + … (n số hạng).
Ví dụ: nhập 1 3 4 thì in ra 40.
Kiểm tra: nhập 3 3 10.
Bài 13. Nhận dạng dãy số
Phần tiêu đề “Bài 13. Nhận dạng dãy số”Dòng đầu là n (3 ≤ n ≤ 105). Dòng thứ hai có n số nguyên dương (≤ 109). In ra CONG nếu dãy là cấp số cộng, NHAN nếu là cấp số nhân (công bội nguyên), CA HAI nếu là cả hai, KHONG nếu không phải cả hai.
Ví dụ:
| Nhập | In ra |
|---|---|
43 6 12 24 | NHAN |
Kiểm tra: nhập
57 7 7 7 7Nhóm 3. Các tổng và dãy đặc biệt
Phần tiêu đề “Nhóm 3. Các tổng và dãy đặc biệt”Bài 14. Tổng bình phương
Phần tiêu đề “Bài 14. Tổng bình phương”Nhập n (n ≤ 2 × 106). In ra 12 + 22 + … + n2.
Ví dụ: nhập 10 thì in ra 385.
Kiểm tra: nhập 1000000.
Bài 15. Tổng lập phương
Phần tiêu đề “Bài 15. Tổng lập phương”Nhập n (n ≤ 104). In ra 13 + 23 + … + n3.
Ví dụ: nhập 4 thì in ra 100.
Kiểm tra: nhập 10000.
Bài 16. Tổng các tích liền nhau
Phần tiêu đề “Bài 16. Tổng các tích liền nhau”Nhập n (n ≤ 106). In ra 1 × 2 + 2 × 3 + 3 × 4 + … + n × (n + 1).
Ví dụ: nhập 3 thì in ra 20.
Kiểm tra: nhập 1000.
Bài 17. Số tam giác
Phần tiêu đề “Bài 17. Số tam giác”Số tam giác là các số 1, 3, 6, 10, 15, … (số thứ n bằng 1 + 2 + … + n). Nhập x (1 ≤ x ≤ 1018), in ra YES nếu x là số tam giác, ngược lại in ra NO.
Ví dụ: nhập 10 thì in ra YES.
Kiểm tra: nhập 2016.
Bài 18. Tháp số
Phần tiêu đề “Bài 18. Tháp số”Viết các số 1, 2, 3, … thành các hàng: hàng 1 có 1 số, hàng 2 có 2 số, hàng 3 có 3 số, … Nhập x (x ≤ 1018), in ra số thứ tự hàng chứa x và vị trí của x trong hàng (đều đếm từ 1).
Ví dụ: nhập 8 thì in ra 4 2.
Kiểm tra: nhập 2026.
Bài 19. Dãy 1, 2, 2, 3, 3, 3, …
Phần tiêu đề “Bài 19. Dãy 1, 2, 2, 3, 3, 3, …”Dãy 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, … (số k xuất hiện k lần liên tiếp). Nhập n (n ≤ 1018), in ra số hạng thứ n.
Ví dụ: nhập 7 thì in ra 4.
Kiểm tra: nhập 2026.
Nhóm 4. Bài toán thực tế
Phần tiêu đề “Nhóm 4. Bài toán thực tế”Bài 20. Xếp que diêm thành hàng ô vuông
Phần tiêu đề “Bài 20. Xếp que diêm thành hàng ô vuông”Dùng que diêm xếp các ô vuông thành một hàng ngang, hai ô cạnh nhau chung một que. Có m que diêm (m ≤ 1018). Xếp được nhiều nhất bao nhiêu ô vuông?
Ví dụ: nhập 10 thì in ra 3.
Kiểm tra: nhập 2026.
Bài 21. Que diêm cho lưới ô vuông
Phần tiêu đề “Bài 21. Que diêm cho lưới ô vuông”Dùng que diêm xếp một lưới n × n ô vuông (n ≤ 109). Cần bao nhiêu que?
Ví dụ: nhập 1 thì in ra 4.
Kiểm tra: nhập 25.
Bài 22. Trồng cây
Phần tiêu đề “Bài 22. Trồng cây”Đoạn đường dài L mét, trồng cây cách đều nhau d mét (L chia hết cho d, L, d ≤ 1018). Nhập L, d và loại t: t = 1 là đường thẳng trồng cả hai đầu, t = 2 là đường thẳng không trồng hai đầu, t = 3 là đường vòng quanh hồ. In ra số cây.
Ví dụ: nhập 100 10 1 thì in ra 11.
Kiểm tra: nhập 2026 2 3.
Bài 23. Leo cột
Phần tiêu đề “Bài 23. Leo cột”Một chú ốc leo cột cao h mét: ban ngày leo lên a mét, ban đêm tụt xuống b mét (b nhỏ hơn a, h, a, b ≤ 1018). Bắt đầu từ chân cột vào sáng ngày thứ nhất. Hỏi đến ngày thứ mấy ốc lên tới đỉnh cột?
Ví dụ: nhập 20 5 3 thì in ra 9.
Kiểm tra: nhập 100 7 2.
Bài 24. Đồng hồ đánh chuông
Phần tiêu đề “Bài 24. Đồng hồ đánh chuông”Đồng hồ đánh chuông mỗi giờ đúng: lúc k giờ đánh k tiếng (theo đồng hồ 12 giờ, 12 giờ đánh 12 tiếng, 13 giờ đánh 1 tiếng). Nhập hai giờ a, b (0 ≤ a ≤ b ≤ 23, giờ trong ngày). In ra tổng số tiếng chuông từ a giờ đến b giờ (kể cả hai đầu).
Ví dụ: nhập 1 3 thì in ra 6.
Kiểm tra: nhập 0 23.