Cho 2 số nguyên dương A, B (1 ≤ A < B ≤ 30000). Tìm 2 số nguyên dương p và q (với p ≤ q) sao cho p + q = A và p x q = B. Dữ liệu vào từ file: TIMSO.INP – Gồm 2 số nguyên dương A, B (1 ≤ A < B ≤ 30000), mỗi số trên một dòng. Kết quả ghi ra file: TIMSO.OUT – Gồm 2 số nguyên dương p, q cách nhau một dấu cách. Nếu không tìm được 2 số nguyên dương p và q thỏa mãn yêu cầu thì ghi chữ N. Ví dụ: TIMSO.INP TIMSO.OUT Giải thích 10 2 8 Hai số p = 2, q = 8 vì p + q = 10 và p x q = 16 16 vd2 2 N Không tìm được 2 số nguyên dương p và q thỏa mãn yêu cầu 3
Quảng cáo
1 câu trả lời 447
import math
# Đọc dữ liệu vào từ file
with open('TIMSO.INP', 'r') as f:
A = int(f.readline().strip())
B = int(f.readline().strip())
# Tính delta
delta = A*A - 4*B
# Kiểm tra delta có phải là bình phương của một số nguyên hay không
if delta < 0 or int(math.sqrt(delta))**2 != delta:
# Không có cặp số nguyên p, q thỏa mãn yêu cầu của bài toán
with open('TIMSO.OUT', 'w') as f:
f.write('N')
else:
# Tìm hai số p và q
p = (A - int(math.sqrt(delta))) // 2
q = (A + int(math.sqrt(delta))) // 2
# Ghi kết quả ra file
with open('TIMSO.OUT', 'w') as f:
f.write(f'{p} {q}')
Quảng cáo
Câu hỏi hot cùng chủ đề
-
4157