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 cứ thế tiếp diễn. Hỏi n tháng có bao nhiêu đôi thỏ, nếu đầu năm có một đôi thỏ sơ sinh? Đó là câu chuyện vui về số Fibonaci, số này được định nghĩa như sau: - f(0) = 0. - f(2) = f(1) = 1. - f(n)= f(n-1) +f(n-2) với n > 2. Yêu cầu: Cho hai số nguyên dương A và B, Tính số lượng số Fibonaci có giá trị trong đoạn [A..B]. Dữ liệu vào: từ tập tin văn bản CFIBO.INP gồm hai số nguyên dương A và B cách nhau ít nhất một khoảng trắng (0 ≤ A ≤ B ≤ 2*10^10). Kết quả: ghi ra tập tin văn bản CFIBO.OUT một số nguyên duy nhất là số lượng số Fibonaci có giá trị trong đoạn [A..B].

1 câu trả lời

const fi='cfibo.inp';
      fo='cfibo.out';
      maxn=round(1e8);
var m,n,d:qword;
    i:longint;
    a: array [0..maxn] of int64;
    b: array [0..maxn] of boolean;
procedure ganfibo;
begin
         fillchar(b,sizeof(d),false);
         a[0]:=0;
         a[1]:=1;
         for i:= 2 to n do a[i]:=a[i-1]+a[i-2];
         for i:=0 to n do
                b[a[i]]:=true;
end;
begin
        assign(input,fi);
        reset(input);
        read(m,n);
        close(input);
        ganfibo;
        for i:=m to n do
                if b[i] then inc(d);
        assign(output,fo);
        rewrite(output);
        write(d);
        close(output);
end.

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