Bài 3. Số tròn chục Tên chương trình: TRONCHUC.CPP
Số tròn chục là số có chữ số hàng đơn vị là chữ số 0.
Yêu cầu: Cho hai số tự nhiên 𝐿 và 𝑅. Hãy đếm xem có bao nhiêu số tròn chục lớn hơn
L và nhỏ hơn R.
INPUT: Nhập vào số tự nhiên 𝐿, 𝑅 (𝐿 < 𝑅 ≤ 1012). Mỗi số trên một dòng.
OUTPUT: Ghi ra kết quả của bài toán.
Ví dụ:
INPUT OUTPUT
5
31
3
Giải thích ví dụ: Có 3 số tròn chục lớn hơn 5 và nhỏ hơn 31 là: 10, 20, 30
Quảng cáo
1 câu trả lời 428
Để giải bài toán đếm số tròn chục giữa hai số \(L\) và \(R\), bạn có thể làm theo các bước sau:
### Phân tích bài toán
1. **Xác định các số tròn chục**: Số tròn chục là số có chữ số hàng đơn vị là 0. Ví dụ: 10, 20, 30, 100, 200, v.v.
2. **Tính số lượng số tròn chục**:
- **Xác định số tròn chục nhỏ nhất lớn hơn \(L\)**: Đây là số tròn chục đầu tiên lớn hơn \(L\).
- **Xác định số tròn chục lớn nhất nhỏ hơn \(R\)**: Đây là số tròn chục cuối cùng nhỏ hơn \(R\).
### C++ Code
Dưới đây là chương trình C++ để thực hiện yêu cầu:
```cpp
#include <iostream>
using namespace std;
int main() {
long long L, R;
cin >> L >> R;
// Tìm số tròn chục nhỏ nhất lớn hơn L
long long firstRound = ((L / 10) + 1) * 10;
if (firstRound <= L) {
firstRound += 10;
}
// Tìm số tròn chục lớn nhất nhỏ hơn R
long long lastRound = (R / 10) * 10;
if (lastRound >= R) {
lastRound -= 10;
}
// Tính số lượng số tròn chục giữa L và R
if (firstRound > lastRound) {
cout << 0 << endl; // Không có số tròn chục nào trong khoảng
} else {
long long count = (lastRound - firstRound) / 10 + 1;
cout << count << endl;
}
return 0;
}
```
### Giải thích chương trình
1. **Tìm số tròn chục nhỏ nhất lớn hơn \(L\)**:
- Chia \(L\) cho 10, làm tròn lên và nhân với 10 để tìm số tròn chục tiếp theo lớn hơn \(L\).
2. **Tìm số tròn chục lớn nhất nhỏ hơn \(R\)**:
- Chia \(R\) cho 10, nhân với 10 để tìm số tròn chục lớn nhất nhỏ hơn \(R\).
3. **Tính số lượng số tròn chục**:
- Nếu số tròn chục nhỏ nhất lớn hơn số tròn chục lớn nhất, không có số nào nằm trong khoảng, nên kết quả là 0.
- Ngược lại, tính số lượng số tròn chục bằng cách lấy hiệu của chúng, chia cho 10 và cộng thêm 1.
Chương trình này sẽ hoạt động hiệu quả với các giá trị lớn của \(L\) và \(R\) (≤ \(10^{12}\)) nhờ vào việc chỉ sử dụng các phép toán cơ bản và không cần phải lặp qua các số trong khoảng.
Quảng cáo
Bạn muốn hỏi bài tập?
Câu hỏi hot cùng chủ đề
-
55294
-
31147
-
29746
