Quay lại danh sách thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Tổng các số Fibonacci chẵn

Cộng các số Fibonacci chẵn không vượt quá một giới hạn.

Bạn sẽ học được gì

  • Sinh các số Fibonacci đến một giới hạn
  • Chỉ giữ các số hạng chẵn
  • Dừng vòng lặp đúng lúc

Đề bài

Xem bản gốc (English)

Bắt đầu dãy số với 1 và 2. Mỗi số tiếp theo là tổng của hai số liền trước. Chỉ lấy các số có giá trị chẵn và không lớn hơn limit, sau đó cộng chúng lại.

Cài đặt hàm even_fibonacci_sum(limit).

Đầu vào

limit: Giá trị lớn nhất của một số trong dãy có thể được lấy.

Đầu ra

Trả về tổng các số hợp lệ, hoặc 0 nếu không có số nào thỏa mãn.

Ràng buộc

0 ≤ limit ≤ 10¹⁵. Kết quả nằm trong phạm vi của số nguyên có dấu 64-bit.

Ví dụ

Ví dụ 1
Đầu vào:
limit = 50

Kết quả mong đợi:
expected = 44
Đầu vào:
long long limit = 50;

Kết quả mong đợi:
long long expected = 44;
Đầu vào:
long limit = 50;

Kết quả mong đợi:
long expected = 44;

Giải thích

Các số chẵn là 2, 8 và 34. Tổng của chúng là 44.

Ví dụ 2
Đầu vào:
limit = 1

Kết quả mong đợi:
expected = 0
Đầu vào:
long long limit = 1;

Kết quả mong đợi:
long long expected = 0;
Đầu vào:
long limit = 1;

Kết quả mong đợi:
long expected = 0;

Giải thích

Số chẵn đầu tiên là 2, nhưng đã vượt quá giới hạn.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Chỉ cần các số Fibonacci chẵn, không cần cả dãy.

Gợi ý 2

Sinh dãy cho đến khi số tiếp theo vượt quá giới hạn rồi cộng các số thỏa điều kiện.

Gợi ý 3

Chú ý trường hợp giới hạn chính nó là một số Fibonacci.

Độ phức tạp mong đợi

thời gian O(log limit), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.