Giả thiết N là số nguyên dương. Số nguyên M là tổng của N với các chữ

Giả thiết N là số nguyên dương. Số nguyên M là tổng của N với các chữ số của nó. N được gọi là số nguồn của M.

Ví dụ: N=245, khi đó M=245+2+4+5=256, như vậy nguồn của 256 là 245.

Cho số nguyên M( M không quá 100 chứ số) hãy tìm nguồn nhỏ nhất của nó. Nếu M không có nguồn thì đưa ra số 0.

Trả lời

uses crt;
var m,ans:string;
    i:longint;
function add(a,b:string):string;
var ans:string;
    sum,carry,i:longint;
begin
    carry:=0; ans:='';
    while length(a) < length(b) do a:='0' + a;
    while length(b) < length(a) do b:='0' + b;
    for i:=length(a) downto 1 do
        begin
            sum:=ord(a[i]) - 48 + ord(b[i]) - 48 + carry;
            carry:=sum div 10;
            ans:=chr(sum mod 10 + 48) + ans;
        end;
    if carry > 0 then ans:='1' + ans;
    exit(ans);
end;
begin
clrscr;
    readln(m);
    ans:='0';
    for i:=1 to length(m) do
        ans:=add(ans,m[i]);
            if ans > '0' then
        writeln(add(m,ans))
    else
        writeln(0);
readln;
end.

Câu hỏi cùng chủ đề

Xem tất cả