Cho số nguyên dương N (N ≤ 104). Gọi M là tổng của N với các chữ số của nó. Khi đó ta gọi N là nguồn của M.
Ví dụ : N = 245, khi đó 245 + 2 + 4 + 5 = 256. Như vậy 245 là nguồn của 256. Có những số không có nguồn và có những số có nhiều nguồn. Ví dụ, số 216 có 2 nguồn là 198 và 207.
4). Hãy tìm nguồn nhỏ nhất của nó. Nếu M không có nguồn thì ghi ra 0.
Input : gồm một số M duy nhất
Output : gồm một số duy nhất là nguồn của M hoặc số 0 nếu M không có nguồn.
Input | Output |
216 | 198 |
Làm pascal nha mn giúp mình với
program tim_nguon_nho_nhat;
const
MAX_NUMBER = 10000;
var
M, nguon_nho_nhat: Integer;
function TinhTongChuSo(num: Integer): Integer;
var
sumOfDigits: Integer;
begin
sumOfDigits := 0;
while num > 0 do
begin
sumOfDigits := sumOfDigits + (num mod 10);
num := num div 10;
end;
TinhTongChuSo := sumOfDigits;
end;
function TimNguonNhoNhat(M: Integer): Integer;
var
N, M_temp, M_digits, nguon_nho_nhat: Integer;
begin
M_temp := M;
nguon_nho_nhat := MAX_NUMBER;
for N := 1 to M_temp do
begin
M_digits := TinhTongChuSo(N) + N;
if M_digits = M_temp then
begin
if N < nguon_nho_nhat then
nguon_nho_nhat := N;
end;
end;
if nguon_nho_nhat = MAX_NUMBER then
TimNguonNhoNhat := 0
else
TimNguonNhoNhat := nguon_nho_nhat;
end;
begin
Readln(M);
nguon_nho_nhat := TimNguonNhoNhat(M);
if nguon_nho_nhat = 0 then
Writeln('0')
else
Writeln('Nguon nho nhat cua ', M, ' la ', nguon_nho_nhat);
end.