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

Lập trình - Lớp 8
30/12/2023 13:05:42

Bạn được cho một số nguyên k, hãy cho biết k có phải là số Fibonacci không

c++ giúp mình với ạ
 
----- Nội dung dịch tự động từ ảnh -----
Một số phần tử đầu tiên của dãy số Fibonacci là 0,1,2,3,5,8,13,21 ...Trừ hai số đầu tiên,
các số trong dãy Fibonacci bằng tổng của hai số liền trước nó. Công thức của dãy số Fibonacci:
0 nếu n = 0
{
1 nếu n = 1
Un-1 + fn-z nếu n>1
Yêu cầu: Bạn được cho một số nguyên k, hãy cho biết k có phải là số Fibonacci hay không?
Dữ liệu vào: Cho trong tệp tin văn ISFIBO.INP bản gồm
fn =
+ Dòng đầu tiên ghi số nguyên t (1 ≤ t ≤ 105) cho biết số lương testcase
+ t dòng tiếp theo mỗi dòng ghi một số nguyên k (0 < k≤1010)
Kết quả ra: Ghi ra tệp tin văn bản ISFIBO.OUT gồm mỗi testcase ghi kết quả trên một dòng,
tương ứng nếu k là số Fibonacci thì ghi “IsFibo” ngược lại ghi “IsNotFibo”
Ví dụ:
3
5
7
8
ISFIBO.INP
ISFIBO.OUT
IsFibo
IsNotFibo
IsFibo
2 trả lời
Hỏi chi tiết
194
0
0
GUNTER OBERDORF ...
08/01 21:28:02
def is_fibo(n):
    x = 0
    y = 1
    while y < n:
        z = x + y
        x = y
        y = z
    return y == n

# Đọc dữ liệu từ tệp ISFIBO.INP
with open('ISFIBO.INP', 'r') as f:
    t = int(f.readline())
    numbers = [int(f.readline()) for _ in range(t)]

# Kiểm tra xem mỗi số có phải là số Fibonacci hay không
results = ['IsFibo' if is_fibo(num) else 'IsNotFibo' for num in numbers]

# Ghi kết quả ra tệp ISFIBO.OUT
with open('ISFIBO.OUT', 'w') as f:
    for result in results:
        f.write(result + '\n')
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng ký tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập
0
0
Hoàng Anh Nguyễn
18/01 12:49:12
import sys
sys.stdin = open("ISFIBO.INP","r")
sys.stdout = open("ISFIBO.OUT","w")
fib = [0, 1]
while fib[-1] + fib[-2] <= 10**10:
    fib.append(fib[-1] + fib[-2])
t = int(input())
for _ in range(t):
    k = int(input())
    if k in fib:
        print("IsFibo")
    else:
        print("IsNotFibo")

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

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