Bài tập  /  Bài đang cần trả lời

Làm bài toán sau bằng Python

Các chữ số từ 0 đến 9, nếu một chữ số bất kỳ có một đường khép kín thì ta gọi chữ số đó có 1 lỗ hổng, có hai đường khép kín thì ta gọi số đó có 2 lỗ hổng, và không có đường khép kín nào thì ta gọi chữ số đó có 0 lỗ hổng. Vậy các chữ số 0, 4, 6, 9 có 1 lỗ hổng, chữ số 8 có 2 lỗ hổng và các chữ số 1, 2, 3, 5, 7 có 0 lỗ hổng. Cho một số nguyên dương ???? (1≤????≤106), ta luôn đếm được số lỗ hổng của các chữ số xuất hiện trong nó.

Ví dụ: Với ????=388247 thì ta đếm được N có 5 lỗ hổng.

Yêu cầu: Tìm số có lổ hổng lớn nhất trong dãy đã cho.

Input:
  • Dòng 1: Ghi số nguyên dương ???? (0<????≤105).
  • Dòng 2: Ghi ???? số nguyên ????1,????2,....????????.(0<=????????<=106), mỗi số cách nhau ít nhất 1 ký tự trắng.
Output:
  • Dòng 1: In ra lổ hổng lớn nhất trong dãy đã cho.
Example:
Input:
Copy
7 234 24689 34 12 123 234 4567
Output:
Copy
5
1 trả lời
Hỏi chi tiết
35
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải bài toán này, chúng ta sẽ lần lượt thực hiện các bước sau:

1. **Đọc dữ liệu nhập vào**: Đầu tiên, chúng ta sẽ đọc số lượng các số nguyên, sau đó đọc các số nguyên đó vào một danh sách.
2. **Đếm số lỗ hổng cho mỗi số**: Dựa vào quy tắc đã cho, chúng ta sẽ xây dựng một hàm để đếm số lỗ hổng trong từng chữ số.
3. **Tìm số có lỗ hổng lớn nhất**: Chúng ta sẽ so sánh số lỗ hổng của từng số để tìm ra số có số lỗ hổng lớn nhất.

Sau đây là mã Python thực hiện các bước trên:

```python
def count_holes(number):
# Tạo một dictionary để lưu số lỗ hổng của từng chữ số
holes = {
'0': 1, '1': 0, '2': 0, '3': 0, '4': 1,
'5': 0, '6': 1, '7': 0, '8': 2, '9': 1
}

# Đếm số lỗ hổng trong từng chữ số của number
total_holes = sum(holes[digit] for digit in str(number))
return total_holes

def main():
import sys
input = sys.stdin.read

# Đọc toàn bộ dữ liệu đầu vào
data = input().splitlines()
n = int(data[0]) # Số nguyên dương N
numbers = data[1].split() # Danh sách các số

max_holes = 0 # Khởi tạo biến chứa số lỗ hổng lớn nhất

# Duyệt qua từng số và đếm số lỗ hổng
for number in numbers:
holes_count = count_holes(number)
max_holes = max(max_holes, holes_count) # Cập nhật giá trị lớn nhất

# In ra kết quả
print(max_holes)

# Nếu bạn chạy script này, hãy dùng lệnh sau để cung cấp dữ liệu:
# python script.py < input.txt

if __name__ == "__main__":
main()
```

### Hướng dẫn hoạt động:
1. **Hàm `count_holes`**: Hàm này nhận vào một số (dưới dạng chuỗi) và trả về tổng số lỗ hổng của tất cả các chữ số trong số đó.
2. **Hàm `main`**:
- Đọc dữ liệu đầu vào từ stdin.
- Chia dữ liệu thành danh sách các số.
- Đếm số lỗ hổng cho mỗi số và cập nhật số lỗ hổng lớn nhất.
3. **Kết quả**: Cuối cùng, nó in ra số lỗ hổng lớn nhất.

Chạy mã này và cung cấp dữ liệu đầu vào theo định dạng yêu cầu (có thể dùng một tệp để redirect đầu vào hoặc nhập thủ công).
0
0
Tuấn Phạm
23/08 11:28:02
+5đ tặng
MÃ PYTHON:
holes = {
    '0': 1,
    '1': 0,
    '2': 0,
    '3': 0,
    '4': 1,
    '5': 0,
    '6': 1,
    '7': 0,
    '8': 2,
    '9': 1
}

def count_holes(number):
    total_holes = 0
    for digit in str(number):
        total_holes += holes[digit]
    return total_holes

def find_max_holes(numbers):
    max_holes = 0
    for number in numbers:
        holes_count = count_holes(number)
        if holes_count > max_holes:
            max_holes = holes_count
    return max_holes

n = 7  
numbers = [234, 24689, 34, 12, 123, 234, 4567]  # dãy các số

result = find_max_holes(numbers)
print(result)



GIẢI THÍCH:
  • Hàm count_holes nhận vào một số nguyên và trả về tổng số lỗ hổng của các chữ số trong số đó.
  • Hàm find_max_holes duyệt qua danh sách các số và tìm ra số có tổng số lỗ hổng lớn nhất.
  • Đầu vào numbers là danh sách các số nguyên cần kiểm tra.

KẾT QUẢ:
Chương trình sẽ in ra tổng số lỗ hổng lớn nhất từ các số trong dãy. Với ví dụ trên, kết quả là 5.

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan
Bài tập Tin học Lớp 6 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo