Cho dãy số có quy luật như sau: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...Cho số nguyên dương n, hãy tính tổng số đầu tiên của dãy Cho dãy số có quy luật như sau: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...
Yêu cầu: Cho số nguyên dương n , hãy tính tổng n số đầu tiên của dãy.
Input
Gồm một dòng chứa một số nguyên dương n . Output
In ra một số nguyên là tổng n số đầu tiên của dãy chia dư cho 10^9 + 7. Tham khảo câu trả lời từ Trợ lý ảo Lazi Dãy số đã cho có quy luật rõ ràng, và chúng ta có thể phân tích cách tính tổng các số đầu tiên trong dãy như sau: 1. **Phân tích dãy số**: - Số 1 xuất hiện 1 lần. - Số 2 xuất hiện 2 lần. - Số 3 xuất hiện 3 lần. - Số 4 xuất hiện 4 lần. - Số k xuất hiện k lần. Như vậy, số k sẽ nằm ở các vị trí từ \((k*(k-1)/2 + 1)\) tới \((k*(k+1)/2)\) trong dãy số. 2. **Tính số lượng các số trong dãy**: - Để tìm tổng của n số đầu tiên, chúng ta cần xác định số k lớn nhất sao cho tổng số lượng các số từ 1 đến k không vượt quá n. Tổng số lượng là: \(\frac{k*(k+1)}{2}\). 3. **Tính tổng**: - Tổng số đầu tiên của dãy cho đến k là: \[ 1 \cdot 1 + 2 \cdot 2 + 3 \cdot 3 + ... + k \cdot k. \] 4. **Sử dụng Python để giải quyết**: ```python def sum_first_n(n): MOD = 10**9 + 7 k = 0 total_numbers = 0 # Tìm k sao cho tổng số lượng không vượt quá n while total_numbers < n: k += 1 total_numbers += k # Nếu tổng số lượng lớn hơn n thì lùi lại 1 if total_numbers > n: k -= 1 # Tính tổng của dãy số từ 1 đến k total_sum = (k * (k + 1) * (2 * k + 1) // 6) % MOD # Phần còn lại: remaining_numbers = n - (k * (k + 1)) // 2 # Cộng thêm số k * remaining_numbers total_sum = (total_sum + k * remaining_numbers) % MOD return total_sum # Input n = int(input().strip()) output = sum_first_n(n) print(output) ``` ### Giải thích mã: - Ta sử dụng một vòng lặp để tìm k sao cho tổng số lượng các số cho đến k không vượt quá n. - Sau đó, ta tính tổng các số từ 1 đến k theo công thức tổng bình phương. - Cuối cùng, ta tính toán số còn lại và cập nhật tổng với giá trị k. ### Kết quả: Chương trình sẽ in ra tổng n số đầu tiên của dãy số mô tả, đã được chia cho \(10^9 + 7\).