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

Giải bài có thưởng!

Trong số học, số phong phú là các số mà tổng các ước số của số đó lớn hơn số đó

Trong số học, số phong phú là các số mà tổng các ước số của số đó (không kể chính nó) lớn hơn số đó. Ví dụ, số 1212 có tổng các ước số (không kể 1212) là 1+2+3+4+6=16>121+2+3+4+6=16>12. Do đó 1212 là một số phong phú.

Bạn hãy lập trình đếm xem có bao nhiêu số phong phú trong đoạn [L,RL,R].

Input
  • Gồm 2 số L,RL,R (1≤L≤R≤1041≤L≤R≤104)
Output
  • Gồm 1 số nguyên duy nhất là số số phong phú trong đoạn [L,RL,R].
Scoring
  • Subtask 11 (50P% số điểm): 1≤L≤R≤1031≤L≤R≤103
  • Subtask 22 (50P% số điểm): không có điều kiện gì thêm
Example

Test 1

InputCopy
1 50
OutputCopy
9
Note

Từ 11 đến 5050 có 99 số phong phú là: 12,18,20,24,30,36,40,42,4812,18,20,24,30,36,40,42,48



 Yêu cầu làm rõ đề
 Thông báo

Không có thông báo nào.



proudly powered by DMOJ| developed by LQDJudge team 
  Tiếng Việt (vi)   English (en)  

0 trả lời
Hỏi chi tiết
37
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải bài toán đếm số phong phú trong đoạn [L, R], ta cần thực hiện các bước sau:

1. **Xác định uớc số của một số**: Tính các ước số của một số nguyên n thông qua việc lặp từ 1 đến √n. Nếu k là ước của n, thì n/k cũng là một ước của n.

2. **Tính tổng ước số**: Tính tổng các ước số của n (không bao gồm n) và kiểm tra xem tổng này có lớn hơn n hay không.

3. **Lặp qua khoảng [L, R]**: Tiến hành lặp từ L đến R và kiểm tra từng số. Nếu thỏa mãn điều kiện của số phong phú, ta sẽ tăng biến đếm.

Dưới đây là một đoạn mã mẫu bằng Python để thực hiện điều này:

```python
def is_abundant(n):
if n < 2:
return False
total = 0
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
total += i
if i != 1 and i != n // i: # tránh cộng n và ước trùng
total += n // i
return total > n

def count_abundant_numbers(L, R):
count = 0
for i in range(L, R + 1):
if is_abundant(i):
count += 1
return count

# Đọc đầu vào
L, R = map(int, input().split())
# Gọi hàm để đếm số phong phú
result = count_abundant_numbers(L, R)
# Xuất kết quả
print(result)
```

### Giải thích đoạn mã:
- Hàm `is_abundant(n)` sẽ kiểm tra xem số n có phải là số phong phú hay không bằng cách tính tổng các ước số của nó.
- Hàm `count_abundant_numbers(L, R)` sẽ đếm số phong phú trong khoảng từ L đến R.
- Cuối cùng, sau khi đọc input, ta sẽ in ra kết quả.

### Lưu ý:
- Kết quả có thể rất lớn nếu khoảng [L, R] lớn nên bạn nên chạy thử nghiệm với các khoảng nhỏ trước khi thử nghiệm với khoảng lớn hơn.
- Đối với bài toán yêu cầu, cần chú ý đến các đặc điểm của các số phong phú khi thiết kế thuật toán để tối ưu hóa quá trình tìm kiếm.

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 Tin học Lớp 10 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