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;
}
```
### **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;
}
```