Big Number – Các thao tác cộng trừ nhân chia số nguyên lớn

1. Giới thiệu:

– Trong một vài trường hợp, bạn cần lưu một số nguyên cực kỳ lớn.

– Chẳng hạn: 123.456.789.123.456.789.123.456.789.123.456.789.123.456.789.123.456.789

– Bạn có bao giờ thắc mắc có kiểu dữ liệu nào có thể đáp ứng được chuyện đó?

– Kiểu int chỉ có thể biểu diễn một số nguyên khoảng 2,1 tỉ. Ngoài ra, chúng ta còn có kiểu “unsigned long long int” với việc có biểu diễn một số có 18  ký số. Trong đó, từ khóa “unsigned” nhầm mục đích chỉ biểu diễn số dương. Nếu không có từ khóa “unsigned” thì vấn đề gì xảy ra, bạn tự tìm hiểu nhé!

– Trong bài này, tôi sẽ hướng dẫn các bạn thực hiện các phép tính cơ bản + – * / giữa 2 “số nguyên“. Nhưng “số nguyên” mà tôi muốn nói là số rất lớn, có số lượng ký số lên đến hàng chục, hàng ngàn và thậm chí là hàng tỉ ký số.

2. Hiện thực: 

– Để sử dụng lớp vector, bạn cần thư viện <vector> và khai báo using namespace std

Hình 1 – Khởi tạo và xem kết quả sau khi khởi tạo

1

Hình 1

Hình 2 – Hàm khởi tạo một số

1

Hình 2

Hình 3 – Hàm loại bỏ các số 0 ở đầu

1

Hình 3

Hình 4 – Hàm in số nguyên

1

Hình 4

 – Sau đó, các bạn thử khởi tạo 2 số và in ra màn hình nhé.

 – Bây giờ chúng ta sẽ bắt đầu vào thực hiện các phép tính + – * /

Hình 5 – Phép cộng

1

Hình 5

Hình 6 – Phép trừ

1

Hình 6

Hình 7 – Phép nhân

1

Hình 7

Hình 10 – Phép chia

 – Trong 4 phép toán thì phép chia là phép dài dòng và phức tạp nhất

 – Phép chia cần đến hàm so sánh và phép trừ

Hình 8 – Thực hiện phép chia thủ công

 – Chúng ta sẽ thực hiện việc chia 2 số như cách mà chúng ta đã biết từ khi học cấp 1

phep-chia-2-so-thap-phan-cho-nhau-buoc-7

Hình 8

Hình 9 – Phép so sánh

1

Hình 9

1

Hình 10

Như vậy là tôi vừa hướng dẫn các bạn thực hiện các phép tính cơ bản giữa các số nguyên cực lớn. Các bạn hãy thử cải tiến các thuật toán trên bằng cách mỗi phần tử của 1 vector có thể lưu 9 ký số chứ không phải là 1 ký số như tôi đã trình bày. Nếu được, hãy kiểm tra tính đúng đắn của thuật toán và liên hệ tôi để cùng nhau thảo luận vấn đề này nhé 🙂

Advertisements

7 thoughts on “Big Number – Các thao tác cộng trừ nhân chia số nguyên lớn

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s