Yêu cầu: Mr Bin là một cậu bé đang học mẫu giáo, cậu thích tìm hiểu về số học. Cậu đang nghiên cứu một loại số mà cậu tạm gọi là số vui vẻ. Cậu định nghĩa rằng: một số nguyên dương n được gọi là số vui vẻ nếu tổng bình phương các chữ số của n là một số chẵn. Cậu băn khoăn tự hỏi liệu có bao nhiêu số vui vẻ trong đoạn [a, b] nhỉ? Nhờ bạn hãy giúp Mr Bin nhé! Dữ liệu: - Một dòng ghi hai số nguyên dương a, b (0<a,b<=106) Kết quả: in ra số lượng số vui vẻ lớn hơn hoặc bằng a và nhỏ hơn hoặc bằng b Ví dụ input 1 5 output 2

2 câu trả lời

- sum[i] = <tổng bình phương chữ số của i>

- Công thức truy hồi: sum[i] = sum[i / 10] + (i % 10) * (i % 10)

- Code:

#include <iostream>
using namespace std;

const int N = 1e6;
int sum[N + 1];
int a, b, res;

int main() {
    cin >> a >> b;
    for (int i = 1; i <= b; ++i) {
        sum[i] = sum[i / 10] + (i % 10) * (i % 10);
    }
    
    for (int i = a; i <= b; ++i) {
        if (sum[i] % 2 == 0) res++;
    }
    cout << res;
}

Để giúp Mr. Bin đếm số lượng số vui vẻ trong đoạn [a, b], chúng ta có thể sử dụng một vòng lặp để kiểm tra từng số trong đoạn [a, b] theo định nghĩa của số vui vẻ.

*Chương trình:

def is_happy_number(n):
    sum_of_squares = 0
    while n > 0:
        digit = n % 10
        sum_of_squares += digit ** 2
        n //= 10
    return sum_of_squares % 2 == 0
def count_happy_numbers(a, b):
    count = 0
    for num in range(a, b + 1):
        if is_happy_number(num):
            count += 1
    return count
# Nhập đầu vào
a, b = map(int, input().split())
# Đếm số lượng số vui vẻ trong đoạn [a, b]
result = count_happy_numbers(a, b)
# In kết quả
print(result)

Giải thích:

- Hàm is_happy_number(n) kiểm tra xem một số n có phải là số vui vẻ hay không. Hàm này tính tổng bình phương các chữ số của n và kiểm tra xem tổng đó có chia hết cho 2 hay không.

- Hàm count_happy_numbers(a, b) đếm số lượng số vui vẻ trong đoạn [a, b]. Hàm này sử dụng vòng lặp để kiểm tra từng số trong đoạn và tăng biến đếm (count) lên nếu số đó là số vui vẻ.

- Đầu vào được nhập từ người dùng và gán cho a và b.

- Kết quả được tính bằng cách gọi hàm count_happy_numbers(a, b).

- Kết quả cuối cùng được in ra màn hình.

Với đầu vào là 1 5, đoạn mã trên sẽ in ra 2, đại diện cho số lượng số vui vẻ trong đoạn từ 1 đến 5 là 2.

Câu hỏi trong lớp Xem thêm

giup e voi I/ Supply the correct form of the verbs in brackets 1. You (think) ……………………… collecting stamps costs much money? 2. Every year, my mother (give) ……………………… me a nice doll on my birthday. 3. Jenny says she loves collecting pens but she (not/continue) ……………………… this hobby from next year. 4. If you wash your hands more, you (have)……………………. less chance of catching flu. 5. Getting plenty of rest is very good. It (help)…………………. you to avoid depression. 6. Mr. John (be) ……………………… principal of our school since last year. 7. I (see) ……………………… a car accident on this corner yesterday. 8. We like (come)……………………to school by bus, but we hate (stand)………………………. and (wait) …………………… in the rain. 9. ……………………… (you/ ever/ meet) anyone famous? 10. My mother (come) ……………………… to stay with us next weekend. 11. When he lived in Manchester, he (work) ……………………… in a bank. 12. We (be) ……………………… students for four years. 13. We are planting trees around our school now. Our school (be) ……………………… surrounded by a lot of green trees. 14. What ……………………… your father usually ……………………… (do) in the evenings? 15. My sister likes (cook) ……………………… very much. She can cook many good foods. 16. My father says when he's retired, he (go) …………………… back to his village to do the gardening. 17. They want (buy) ……………………… some meat for dinner. 18. Linh is my best friend. We (know) ……………………… each other for 5 years. 19. I enjoy (fish) ……………………… because it is relaxing. 20. How about (go) ……………………… to the movie theatre?

3 lượt xem
1 đáp án
23 giờ trước