30/09/2018, 18:10
Xin hỏi về cách xử lí số nguyên lớn (có trăm ngàn chữ số)
Chào anh chị. Anh chị có thể chỉ em cách xử lí một số nguyên lớn (có hàng trăm chữ số). Thầy em chỉ nói là xử lí bằng kiểu string, nhưng em không biết làm sao hết anh chị. Em phải xử lí 2 số đó rồi cộng trừ với nhau. Cám ơn anh chị trước ạ
Bài liên quan
Cộng theo cột như hồi tiểu học cộng ấy.
Cái này kiểu xâu mà bạn? Làm sao nó biết số cuối hay sao đó để cộng?
lấy kí tự cuối bạn ạ, cứ lần lượt, để 1 biến lưu có nhớ ko
kiểu xâu mà chia được hả bạn? Số này có hàng trăm ngàn chữ số lận, nên long long cũng không thể dùng được
à ghi nhầm, mình sửa rùi đó, lấy kí tự cuối ra biến thành số rùi cộng
‘1’ - ‘0’ = 1
Hehehehe, vậy ta nhập vào chuỗi, sau đó biến nó thành mảng byte chứa cả trăm chữ số, với mỗi chữ số nằm 1 ô trong mảng.
Và rồi ta cộng thôi!
mình chưa hiểu ý bạn nữa. Vd số đó là 1234567890 và 9876543210 đi thì làm sao bạn?
như rày, code python nhá
python mình không biết bạn. Chỉ biết C++. Sr bạn
Nè nha
số nhỏ thôi, số to viết nhiều mình lười viết
a = 123
b = 31
Thì a và b đang ở dạng chuỗi.
Ta biến nó thành mảng a_ bằng cách 1 vòng for
Tương tự với b.
Vậy là ta đc 2 mảng số, bh thì làm cộng như lớp 1 thôi
Nhưng nếu bạn ko thích đổi từ chuỗi sang 1 mảng riêng, thì lúc tính toán bạn đổi trực tiếp cũng đc. Nhưng lại mất công đổi 2 lần (kí tự -> số, rồi số -> kí tự)
Bạn cứ từ từ suy ngẫm là ra thôi.
Mình mới học C++ nên hỏi ngu một xí nhe bạn.
a.length()
là gì vàa_[i] = a[i] - '0';
có nghĩa gì bạn?bạn phải chú ý, trong hai số có 1 số dài hơn, như vậy bạn có thể chèn thêm một dãy 0 vào đầu số ngắn hơn cho dài = số kia, sau đó đặt 1 biến con nhớ (4+8=2 nhớ 1 đó), loop:
, nếu lớn hơn 10 thì nhớ = 1
là độ dài mảng, chuỗi,
PS: hỗ trợ tận tình mà nãy giờ ko thấy like j hết dạ
a.length() = lấy chiều dài của chuỗi a
a_[i] = a[i] - ‘0’ = đổi kí tự a[i] thành số.
Như ‘1’ - ‘0’ = 1
hehe quên mất. Sr bạn nhe
Cộng trừ thì làm bt. Nhân thì FFT mới chạy nổi 10^5 chữ số. Chia thì dùng newton hoặc naive
có phải kí tự thứ nhất từ phải sang trái vd là 1 thì a[1] sẽ là 1 đúng ko bạn, cứ chạy cho đến khi nó hết?
như ví dụ trên thì đúng là v
Chạy đến khi đạt đến chiều dài của chuỗi thì thôi.
Mà lưu ý với 2 số chênh lệch chữ số với nhau nhé.
frostphantom có nói rồi đó
khi cộng 2 số đó với nhau thì dùng vòng for đúng không bạn? Vậy điều kiện là gì bạn?
thêm 1 dàn số 0 trước 1 số sao cho chiều dài của nó bằng chiều dài số kia làm sao bạn?