PDA

View Full Version : Bài toán nhân chia cộng trừ số dài



duong_hieu_9x
26-11-2009, 16:43
Các anh ơi giúp em làm mấy bài toán về cộng trừ nhân chia số dài với .Max khoảng 100000 .Anh nào chỉ hộ em thuật toán hay bài giải cũg được để tiện tham khảo.Cảm ơn nhiều

songohan2009
26-11-2009, 20:06
Các anh ơi giúp em làm mấy bài toán về cộng trừ nhân chia số dài với .Max khoảng 100000 .Anh nào chỉ hộ em thuật toán hay bài giải cũg được để tiện tham khảo.Cảm ơn nhiều

Tư tưởng là cộng, trừ, nhân như cách làm hồi cấp 1.
Code cộng số lớn, các phép kia bạn tự tìm hiểu, nhân số lớn thì hơi phức tạp hơn chút. :)



{ Ta sẽ cộng từng chữ số từ phải qua trái và sử dụng thêm 1 biến nhớ }
type
bignum = array[0..100000] of longint;

function cong(x, y: bignum): bignum;
var
i, nho: longint;
begin
fillchar(cong, sizeof(cong), 0);
nho := 0;
for i := 100000 downto 1 do
begin
cong[i] := x[i] + y[i] + nho;
nho := cong[i] div 10;
cong[i] := cong[i] mod 10;
end;
end;

Đây là cách cộng đơn thuần với cơ số 10. Nếu muốn chương trình chạy nhanh hơn và tốn ít bộ nhớ hơn thì bạn có thể làm với cơ số 10^9, thậm chí là 10^18. Tuy nhiên cách làm trên là ổn với những bạn mới học về số lớn. :)