Fibo đầu tiên

Xem PDF



Thời gian:
Scratch 5.0s
Bộ nhớ:
Scratch 256M

Tác giả:
Dạng bài
Điểm: 200 (p) Thời gian: 1.0s Bộ nhớ: 977M Input: bàn phím Output: màn hình

"Một đôi thỏ (gồm một thỏ đực và một thỏ cái) cứ mỗi tháng đẻ được một đôi thỏ con (cũng gồm một thỏ đực và thỏ cái); một đôi thỏ con, khi tròn 2 tháng tuổi, sau mỗi tháng đẻ ra một đôi thỏ con, và quá trình sinh nở cứ thế tiếp diễn. Hỏi sau n tháng có bao nhiêu đôi thỏ, nếu đầu năm (tháng Giêng) có một đôi thỏ sơ sinh?"

Trong hình vẽ trên, ta quy ước:

  • Cặp thỏ nâu là cặp thỏ có độ tuổi \(1\) tháng.
  • Cặp thỏ được đánh dấu (màu đỏ và màu xanh) là cặp thỏ có khả năng sinh sản.

Nhìn vào hình vẽ trên ta thấy:

  • Tháng Giêng và tháng Hai: Chỉ có \(1\) đôi thỏ.
  • Tháng Ba: đôi thỏ này sẽ đẻ ra một đôi thỏ con, do đó trong tháng này có \(2\) đôi thỏ.
  • Tháng Tư: chỉ có đôi thỏ ban đầu sinh con nên đến thời điểm này có \(3\) đôi thỏ.
  • Tháng Năm: có hai đôi thỏ (đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Ba) cùng sinh con nên ở tháng này có \(2 + 3 = 5\) đôi thỏ.
  • Tháng Sáu: có ba đôi thỏ (\(2\) đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Tư) cùng sinh con ở thời điểm này nên đến đây có \(3 + 5 = 8\) đôi thỏ.

Khái quát, nếu \(n\) là số tự nhiên khác 0, gọi \(f(n)\) là số đôi thỏ có ở tháng thứ \(n\), ta có:

  • Với \(n=1\) ta được \(f(1)=1\).
  • Với \(n=2\) ta được \(f(2)=1\).
  • với \(n=3\) ta được \(f(3)=2\).
  • Do đó với \(n>2\) ta được \(f(n)=f(n-1)+f(n-2)\).

Dãy số trên được gọi là dãy số Fibonacci (Link wikipedia) và được định nghĩa như sau:

  • \(F_1=F_2=1\)
  • \(F_n=F_{n-2}+F_{n-1}\)

Hãy viết chương trình tính \(n\) số Fibonacci đầu tiên.

Input

  • Dòng đầu tiên và duy nhất chứa 1 số nguyên dương \(n\) \((1 \leq n \leq 90)\)

Output

  • In \(n\) số Fibonacci đầu tiên trên 1 dòng.

Example

Test 1

Input
10 
Output
1 1 2 3 5 8 13 21 34 55

Bình luận

  • Sangnguyen 12:32 p.m. 30 Tháng 3, 2025

    include<bits/stdc++.h>

    using namespace std;
    typedef long long ll;

    int main(){
    ll n;cin>>n;
    ll a=1,b=1;
    cout<<"1 ";
    if(n>1)cout<<"1 ";
    for(int i=3;i<=n;i++){
    ll c=a+b;
    cout<<c<<" ";
    a=b;
    b=c;
    }
    return 0;
    }

    • 8 bình luận nữa