Cho một sợi dây dài 𝑚 mét. Người ta muốn cắt sợi dây thành hai sợi sao cho độ dài của một sợi gấp 𝑘 lần sợi kia. Yêu cầu: Tìm độ dài của hai sợi dây sau khi cắt. Dữ liệu vào: Từ tệp văn bản CATDAY.INP ghi hai số 𝑚 và 𝑘 (0 < 𝑘 < 𝑚 ≤ 10^18) trên cùng dòng cách nhau một dấu cách. Kết quả: Ghi ra tệp văn bản CATDAY.OUT hai số nguyên dương là độ dài của hai sợi dây sau khi cắt theo thứ tự từ nhỏ đến lớn. Nếu bài toán không có nghiệm thì ghi số -1. Ví dụ 1: CATDAY.INP CATDAY.OUT 20 4 4 16 Ví dụ 2 CATDAY.INP CATDAY.OUT 5 3 -1

2 câu trả lời

- Gọi a là độ dài sợ dây ngắn, b là độ dài sợ dây dài (a, b ∈ N*)

- Ta có: `{(k.a = b),(a + b = m):}`

`=>{(k.a = b),((k+1).a = m):}`

`=>{(b = a.k),(a = m/(k+1)):}`

- Code:

uses crt;
var k, m, a, b: int64;
begin
    clrscr;
    readln(m, k);
    a:=m div (k + 1);
    b:=a * k;
    if a + b <> m then write(-1) else write(a, ' ', b);
readln;
end.

uses crt;
var k,m,a,b: longint;
begin
clrscr;
readln(m,k);
a:=m div (k+1);
b:=a*k;
if a+b <> m then write(-1) else write(a,' ',b);
readln;
end.

Câu hỏi trong lớp Xem thêm