Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm chữ số sau dấu phẩy khi chia hai số trong C++

Cho hai số nguyên num1, num2. Chia num1 cho num2 và đếm số chữ số phần thập phân.

Ví dụ

2/5 = 0.4 → 1 chữ số

2/3 = 0.666... → vô hạn (Infinite)

2/0 → lỗi chia cho 0

Phương pháp

Mô phỏng phép chia tay: lặp lấy dư, nhân 10, chia lại. Dùng unordered_map lưu các dư đã gặp. Nếu dư lặp lại → vô hạn. Nếu dư = 0 → dừng, trả về count.

Ví dụ minh họa (C++)

#include <iostream>
#include <unordered_map>
using namespace std;

int countdigits(int x, int y) {
    int result = 0;
    unordered_map<int, int> mymap;
    while (x % y != 0) {
        x = x % y;
        result++;
        if (mymap.find(x) != mymap.end()) return -1; // vô hạn
        mymap[x] = 1;
        x = x * 10;
    }
    return result;
}

int main() {
    int res = countdigits(2, 5);
    (res == -1) ? cout << "count is Infinity" : cout << "count is " << res;
    return 0;
}

Đầu ra

count is 1