Chúng ta được cung cấp hai số nguyên, giả sử là num1 và num2 và nhiệm vụ là chia num1 với num2 và tính số chữ số sau số thập phân khi chia các số đã cho này.
Ví dụ
Input − num1 = 2, num2 = 5 Output − count is 1
Giải thích - khi chúng ta chia 2 với 5 tức là? =0,4, vì vậy các chữ số sau phần thập phân là 1 do đó số đếm là 1.
Input − num1 = 2, num2 = 0 Output − Floating point exception (core dumped)
Giải thích - khi chúng ta chia bất kỳ số nào với 0, nó sẽ trả về lỗi và kết thúc chương trình một cách bất thường.
Input − num1 = 2, num2 = 3 Output − Infinite
Giải thích - khi chúng ta chia 2 với 3 tức là 2/3 =0,666 ..., các chữ số sau phần thập phân là vô hạn, do đó chúng ta sẽ in ra vô hạn.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Nhập hai biến, giả sử là num1 và num2
-
Tạo một biến đếm để lưu trữ số lượng các số thập phân và khởi tạo nó bằng 0
-
Tạo một ô biến của loại bản đồ không có thứ tự
-
Bắt đầu vòng lặp trong khi num1% num2! =0
-
Bên trong vòng lặp, đặt num1 với num1% num2
-
Tăng giá trị của số đếm lên 1
-
Kiểm tra xem um.find (num1)! =Um.end () rồi trả về -1
-
Bên ngoài vòng lặp, trả về giá trị trong số đếm.
-
In kết quả.
Ví dụ
#include <iostream> #include <unordered_map> using namespace std; int countdigits(int x, int y){ int result = 0; // result variable unordered_map<int, int> mymap; // calculating remainder while (x % y != 0){ x = x % y; result++; if (mymap.find(x) != mymap.end()){ return -1; } mymap[x] = 1; x = x * 10; } return result; } int main(){ int res = countdigits(2, 5); (res == -1)? cout << "count is Infinty" : cout <<"count is "<<res; return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -
Số lượngcount is 1