Chủ đề: Phép chia số nguyên lớn!
-
30-11-2008, 06:50 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Phép chia số nguyên lớn!
Mình đang làm bài số nguyên lớn. Mình làm được phép cộng, trừ ,nhân rồi nhưng đến phép chia thì hơi búi ....Bạn nào có thể giới thiệu qua cho mình cách làm hay thuật toán phép chia không?
Không biết hỏi kiểu như thế này có bị xem là phạm quy không nữa. HiHi!
Bạn nào biết thì giúp mình nhen! Cảm ơn nhiều!View more random threads:
- cu viet ham la em bi sai..cac ban giup minh hieu rõ hơn ve ham với
- giải thích dùm mình lỗi trong bài thêm 1 phần tử x vào mảng tại vị trí k
- kiểu bản ghi và if.
- Lỗi hàm strcat - không hiểu sai ở đâu @@
- bài tập
- Thuật toán ba lan ngược trong C bị lỗi, sửa như thế nào?
- Xem hộ mình class MENU với nó báo lỗi hoài ak
- Giúp em lỗi ") expected"
- Một vài thắc mắc nhỏ
- Sắp xếp mảng 2 chiều, giúp mình với?
-
01-12-2008, 01:51 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi pen&pen
vậy thì phép chia bạn làm ngược lại đi
trừ cho đến khi nào hiệu nhỏ hơn số trừ thì thôi
dùng 1 biến đếm lưu số lần thực hiện phép trừ đó chính là thương của phép chia
Ví dụ:
15/7 có thể làm như sau:
15-7=8>7; cout=1
8-7=1<7 ; cout=2
Vậy thương của phép chia 15/7 là 2
Nếu bạn đã làm tốt phép cộng số nguyên lớn thì mình nghĩ phép nhân, chia cũng từ đó mà ra cả
(post vội vàng còn đi học không bít có chỗ nào sai không????)
-
01-12-2008, 02:21 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Vậy chẳng lẽ lấy 1.000.000.000 chia cho 2 thì phải thực hiện 500.000.000 lần sao bạn? Phải nghĩ tới phương pháp tối ưu chứ!
-
01-12-2008, 02:46 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi long.bkiter07
-
01-12-2008, 05:56 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sorry ! Lần trước post vội quá nên chưa nói rõ kiểu làm của mình.
- Cách lưu trữ:đầu tiên nhập vào kiểu char, sau đó chuyển nó vào một danh sách liên kết(liên kết đôi) , có dùng hàm atoi() trong thư viện string để chuyển kiểu.
- Phép cộng vÀ trừ làm theo cách truyền thống như hồi cấp 1 mình học ấy, cộng từ phần tử cuối, rồi chuyển dần sang phía bên trái...
- Phép trừ tương tự
- Phép nhân thì nhân lần lượt một phần tử rồi cộng lại với nhau
Đó là mình nói qua loa thế thôi chứ tóm lại là như hồi cấp một mình học ấy.
Nhưng phép chia thì mình gặp khó khkăn bởi vì chia thì không thể chia từng phần tử như nhân hay cộng trừ được...
Có ai đã làm bài này rồi ko? Góp ý mình với , mình ko cần code chỉ là hướng dẫn cách làm cũng được, cụ thể vào!
"Càng cụ thể thì ta càng dẽ hiểu;
Càng dẽ hiểu thì ta lại càng dễ làm" kekeke
Cảm ơn trước nhé!
-
05-12-2008, 10:25 AM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
có phải phép nhân bạn thực hiện cộng dồn không?
vậy thì phép chia bạn làm ngược lại đi
trừ cho đến khi nào hiệu nhỏ hơn số trừ thì thôi
dùng 1 biến đếm lưu số lần thực hiện phép trừ đó chính là thương của phép chia
Ví dụ:
15/7 có thể làm như sau:
15-7=8>7; cout=1
8-7=1<7 ; cout=2
Vậy thương của phép chia 15/7 là 2
Nếu bạn đã làm tốt phép cộng số nguyên lớn thì mình nghĩ phép nhân, chia cũng từ đó mà ra cả
(post vội vàng còn đi học không bít có chỗ nào sai không????)
VD có số 12345 / 23
ta xét đầu tiên lấy 2 số của số chia ( 12345)
được số 12 /23 ==0 vậy ta thêm 1 số nữa để thực hiện phép chia
123 /123 >0 vậy ta có kết quả đầu tiên là 5
tiếp tục lây123 ( của số chia ) - 5 nhân với 23
được dư là 8 + 34 được bao nhiêu lại chia cho 23 tiếp,cứ thế cho đến hết
hehe cái này thì đúng nghĩa là chia bằng tay roài
điều kiện cơ bản là bạn phải xây 1 hàm chia 2 số có cùng chữ số hoặc nhiều hơn 1 chữ số VD 12/10 hoặc 123/23 ,phép chia đó dựa vào thuật toán của bạn trên,không biết có cách nào tối ưu hơn không
-
06-12-2008, 09:19 AM #7Banned
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tự làm cho quen đi chứ hỏi gì mà hỏi .Bạn chia bằng cách cứ trừ dần dần .
-
06-12-2008, 04:34 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cảm ơn ý kiến định hướng của mọi người!
-
05-02-2009, 04:27 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi coder_gate
Còn thế nào là số lớn? Số lớn phải cỡ vài chục đến vài trăm chữ số, chứ còn khoảng 9,10 chữ số thì thôi các bác cứ làm như cái cách "cổ kính" kia của em cho nhanh, chắc là vẫn nằm trong giới hạn tính đó (khai báo là long int là ok).
À mà còn nữa, làm như cái bác này thì nhập số có khoảng mười mấy chữ số là die luôn chứ máy chẳng có chịu chạy đâu, vượt quá giới hạn mà. Còn thuật toán kia thì phải nói là thật buồn cười (thuật toán dành cho cấc em lớp 1 mới đi học đây mà). Nếu như trong phạm vi tính toán mà lại đi làm theo thuật toán này thì đúng là thừa (so với cách của em thì dài lê thê).
Thích số lớn thì vào đậy mà download http://forums.congdongcviet.com/showthread.php?t=13791
Thôi chào các bác!
-
05-02-2009, 04:57 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi trubavuong
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...