Bài toán cộng số lớn

21 views
Skip to first unread message

tienph...@gmail.com

unread,
Feb 24, 2013, 10:45:11 PM2/24/13
to thcsthait...@googlegroups.com
Tính tổng của hai số nguyên a và b, (a,b<=10^100)

tienph...@gmail.com

unread,
Feb 24, 2013, 10:45:32 PM2/24/13
to thcsthait...@googlegroups.com, tienph...@gmail.com
var
        f:text;
        a,b:string;
procedure input(var a,b:string);
        var
                f:text;
        begin
                assign(f,'sum.inp');
                reset(f);
                readln(f,a);
                read(f,b);
                close(f);
        end;
Function sum(a,b:string):string;
        var
                soa,sob,sonho,code,i,ab:integer;
                snho,kq,sab:string;
        begin
                {Tang do dai xau a den khi bang do dai xau b}
while length(a)<length(b) do
                        a:='0'+a;

{Tang do dai xau b den khi bang do dai xau a}
                while length(a)>length(b) do
                        b:='0'+b;

{Cong them 0 vào a va b phong truong hop phep cong cuoi cung co nho}
                a:='0'+a;
                b:='0'+b;

{Cong tung so tu phai sang trai}
                sonho:=0;
                for i:=length(a) downto 1 do
                        Begin
                                val(a[i],soa,code);
                                val(b[i],sob,code);
                                ab:=soa+sob+sonho;
                                str(ab,sab);
                                if length(sab)>1 then
                                        begin
                                                snho:=sab[1];
                                                kq:=sab[2]+kq;
                                                val(snho,sonho,code);
                                        end
                                else
                                        begin
                                                kq:=sab+kq;
                                                sonho:=0;
                                        end;
                        end;

{Cat bo so 0 dau neu co}
                if kq[1]='0' then delete(kq,1,1);

                sum:=kq;
        end;
{Chuong trinh chinh}
Begin
        input(a,b);
        assign(f,'sum.out');
        rewrite(f);
        write(f,sum(a,b));
        close(f);
End.
Reply all
Reply to author
Forward
0 new messages