Solutions of Division - MarisaOJ: Marisa Online Judge

Solutions of Division

Select solution language

Write solution here.


User Avatar Kaizen    Created at    4 likes

Hình dung bài toán như một cách chia đã được học ở tiểu học là chia có dư Ví dụ của đề bài để hình dung rõ hơn : 22 7 5 22:7=3 dư 1 1:7 không được ta mượn 0 -> 10:7=1 dư 3 3:7 không được ta mượn 0 -> 30:7=4 dư 2 2:7 không được ta mượn 0 -> 20:7=2 dư 6 6:7 không được ta mượn 0 -> 60:7=8 dư 4 4:7 không được ta mượn 0 -> 40:7=5 dư 5 Gọi biến t là chữ số thứ t sau dấu thập phân Với mỗi lần mượn ta tăng biến t lên 1 cho đến khi nào t<=k -> Sử dụng vòng lặp **Lưu ý:** Hãy tự code trước khi xem code mẫu để tham khảo ``` #include <bits/stdc++.h> using namespace std; int main() { long long a,b,k; cin>>a>>b>>k; int t=0; while(t<k) { if(a<b) a=a*10,t++; if(t==k) break; a=a-(a/b)*b; } cout<<a/b; return 0; } ```

___hazelh    Created at    0 likes

### **Thuật toán:** 1. Kiểm tra nếu $a$ chia hết cho $b$: * Nếu $a \mod b = 0$, in ra $0$ và kết thúc chương trình. 2. Nếu không chia hết: * Tìm phần dư khi chia $a$ cho $b$. * Nhân phần dư với $10$, sau đó chia lấy phần nguyên để tìm chữ số thập phân. * Lặp lại quá trình trên $k$ lần để tìm chữ số thập phân thứ $k$. --- ### **Mã C++:** ```cpp #include <bits/stdc++.h> using namespace std; int a, b, k; int main() { cin >> a >> b >> k; // Nhập a, b, và k if (a % b == 0) { cout << 0; // Nếu a chia hết cho b, in 0 và kết thúc return 0; } int res = 0; // Chữ số thập phân tại vị trí k while (k--) { a = (a % b) * 10; // Tính phần dư và nhân 10 res = a / b; // Lấy chữ số thập phân tại vị trí hiện tại } cout << res; // In ra chữ số thập phân thứ k return 0; } ```