|
Chương Trình Hữu ích, thực tiễn 9 năm, 3 tháng trước
|
(+0)
|
Xin chào mọi người, em năm nay mới được học lập trình, vưa viết được chương trình có tính ứng dung cao, đó là chương trình nhập vào 2 số nguyên dương a và b (a,b có thể rất rất lớn, a,b<10^101), in ra tích a và b. em vội đưa lên để mọi người nhận xét và góp ý cho em. Cảm ơn nhiều.
program phep_nhan;
uses crt;
var t:array[1..200]of array[1..200]of byte;
k,l,nho:byte;
i,j:word;
s:longint;
ha,hb,kq: array[1..200]of byte;
a,b,tr: string;
{================================}
procedure reset;
begin
for i:=1 to 200 do begin
ha[i]:=0; hb[i]:=0;kq[i]:=0;
for j:=1 to 200 do t[i][j]:=0;
end;
end;
{================================}
procedure xuli;
begin
for i:=k downto 1 do case a[i] of
'0': ha[k-i+1]:=0;
'1': ha[k-i+1]:=1;
'2': ha[k-i+1]:=2;
'3': ha[k-i+1]:=3;
'4': ha[k-i+1]:=4;
'5': ha[k-i+1]:=5;
'6': ha[k-i+1]:=6;
'7': ha[k-i+1]:=7;
'8': ha[k-i+1]:=8;
'9': ha[k-i+1]:=9;
end;
for i:=l downto 1 do case b[i] of
'0': hb[l-i+1]:=0;
'1': hb[l-i+1]:=1;
'2': hb[l-i+1]:=2;
'3': hb[l-i+1]:=3;
'4': hb[l-i+1]:=4;
'5': hb[l-i+1]:=5;
'6': hb[l-i+1]:=6;
'7': hb[l-i+1]:=7;
'8': hb[l-i+1]:=8;
'9': hb[l-i+1]:=9;
end;
end;
{===============================}
procedure nhan;
begin
for j:=1 to l do begin
nho:=0;
for i:=1 to k do begin
t[j][i+j-1]:=(ha[i]*hb[j]+nho)mod 10;
nho:=(ha[i]*hb[j]+nho)div 10;
end;
t[j][k+j]:=nho;
end;
end;
{=============================}
procedure cong;
begin
nho:=0;
for i:=1 to k+l do begin
s:=0;
for j:=1 to l do s:=s+t[j][i];
kq[i]:=(s+nho) mod 10;
nho:=(s+nho) div 10;
end;
end;
{==============================}
begin clrscr;
readln(a); readln(b);
if length(a)<length(b) then begin tr:=a;a:=b;b:=tr; end;
reset;
k:=length(a); l:=length(b);
xuli;
nhan;
cong;
if kq[k+l]<>0 then write(kq[k+l]);
for i:=l+k-1 downto 1 do write(kq[i]); writeln;
readln
end.
|
|
|
Đã lưu IP
|
|
PiTaGo
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 3 tháng trước
|
(+0)
|
Mình tính được đến 10^1000 thì bạn nghĩ sao?
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
iamquang95 (Thành viên)
Nhắm mắt code không bug
Bài viết: 295
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 3 tháng trước
|
(+0)
|
Mình có thể in ra to hơn bạn 
Bạn nghĩ sao =)
(Bắt chước anh xuanan_nd :"3 )
Đây chỉ là thuật toán BigNum cơ bản thôi mà =-=
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 3 tháng trước
|
(+0)
|
đây mình chạy trên tubol thôi, free thì lờn hơn nhiều.
Chỉ cần thay đổi giới hạn cho mảng ha,hb,kq và mảng hai chiều t. mình mới làm quen với lập trình thôi. 
|
|
|
Đã lưu IP
|
|
PiTaGo
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 3 tháng trước
|
(+0)
|
thai9cdb viết:
QUOTE: đây mình chạy trên tubol thôi, free thì lờn hơn nhiều.
Chỉ cần thay đổi giới hạn cho mảng ha,hb,kq và mảng hai chiều t. mình mới làm quen với lập trình thôi.:D
Mình đùa vậy thôi, bạn có thể chia nhóm số để tính được nhiều hơn. Thuật toán nhân cũng khá đơn giản, bạn có thể tham khảo ở đây: BIGNUM ( cách chia nhóm số )
hoặc ở đây: Số nguyên lớn trên Pascal
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
startbkhn (Thành viên)
Đã biết code đệ quy
Bài viết: 14
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 3 tháng trước
|
(-1)
|
Có cấp phát động cái mảng kia không? Để chương trình của bạn tối ưu hơn
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
pooh (Thành viên)
pooh-
Super fast coder
Bài viết: 55
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 2 tháng trước
|
(+0)
|
Theo mình thì Cộng mảng nhanh hơn chuỗi còn các bạn nghĩ sao ?
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
acer (Thành viên)
acer_-
Nhắm mắt code không bug
Bài viết: 123
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 2 tháng trước
|
(+0)
|
cộng mảng luôn nhanh hơn chuỗi 
|
|
|
Đã lưu IP
|
|
Kết bạn bốn phương!!!
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: Chương Trình Hữu ích, thực tiễn 9 năm, 2 tháng trước
|
(+0)
|
pooh viết:
QUOTE: Theo mình thì Cộng mảng nhanh hơn chuỗi còn các bạn nghĩ sao ?
Bạn ấy cộng mảng mà, đọc chuỗi, đổi chuỗi ra mảng byte rồi cộng.
|
|
|
Đã lưu IP
|
|
|
|
Đã khóa chức năng gửi bài. |
|