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.

1 câu 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.