Language: Python 3
Đề bài:
-Cho số nguyên dương N. Đếm xem có bao nhiêu cặp số nguyên a, b (0 < a <= b) để tổng các số
nguyên trong đoạn [a,b] bằng N. Hai đoạn khác nhau là hai đoạn có ít nhất một phần tử khác nhau.
-Dữ liệu vào từ tệp BAI1.INP: Gồm duy nhất một số nguyên dương N (0 < N < 10^15).
-Kết quả ra ghỉ vào tệp BAI1.OUT: Gồm một số nguyên dương duy nhất là kết quả của bài toán.
-Ví dụ:
BAI1.INP: 9
=> BAI1.OUT: 3
+Giải thích
Có ba đoạn số thoả mãn:
[2,4],[4,5],[9,9].
Giúp mình nhee:33
Quảng cáo
1 câu trả lời 229
Đây là code giải bài toán trên bằng Python 3:
`python
# Đọc dữ liệu vào từ file BAI1.INP
with open('BAI1.INP', 'r') as f:
n = int(f.readline())
count = 0
sum_ab = 0
a = 1
# Duyệt các cặp số nguyên a, b (0 < a <= b)
for b in range(1, n+1):
sum_ab += b
# Nếu tổng các số trong đoạn [a,b] vượt quá N thì tăng a lên 1
while sum_ab > n:
sum_ab -= a
a += 1
# Nếu tổng các số trong đoạn [a,b] bằng N thì tăng biến đếm count lên 1
if sum_ab == n:
count += 1
# Ghi kết quả ra file BAI1.OUT
with open('BAI1.OUT', 'w') as f:
f.write(str(count))
`
Giải thích code:
- Đầu tiên, đọc dữ liệu vào từ file BAI1.INP và lưu vào biến n.
- Khởi tạo biến count để đếm số cặp số nguyên a, b thoả mãn yêu cầu đề bài.
- Sử dụng hai biến a và b để duyệt qua tất cả các cặp số nguyên a, b (0 < a <= b).
- Sử dụng biến ∑ab để tính tổng các số nguyên trong đoạn [a,b].
- Với mỗi giá trị của b, ta cộng thêm b vào sum_ab và kiểm tra nếu sum_ab vượt quá N thì tăng a lên 1 và giảm đi giá trị của a trong sum_ab cho đến khi sum_ab không vượt quá N nữa.
- Nếu sum_ab bằng N thì tăng biến đếm count lên 1.
- Cuối cùng, ghi kết quả ra file BAI1.OUT.
Quảng cáo
Câu hỏi hot cùng chủ đề
-
4021
-
3605
-
3130