Hương dẫn làm bài fibonacy

Yêu cầu: nhập vào 1 mảng n phần tử. kiểm tra mảng đó có thuộc dãy fibonacy hay không.
true:                                                                       false:
n=5                                                                        n=5
1 2 3 5 8                                                                1 3 5 8 13
n=4                                                                        n=4
1 1 2 3                                                                   1 2 3 1
Hướng làm: kiểm tra hai vị trí đầu tiên có thoả mãn các điều kiện sau hay không
A[0],A[1]: Thuộc dãy fibonacy;
A[1]>A[0];
A[1]+A[0] có thuộc dãy fibonacy hay k;
tiếp tục chúng ta kiểm tra các vị trí còn lại có thoa mã
A[i]=A[i-1]+A[i-2] : true thì tiếp tục kiểm tra đến vị trí tiếp theo; false thì thoát ra.
in ra màn hình kết quả sau khi kiểm tra xong.
Sau đây là code mẫu mình đã làm mọi người có thể tham khảo:
#include<iostream>
using namespace std;
class fibonacy{
public:
                // mình tiến hành khơi tạo hàm kiểm tra một số có thuộc dãy fibonacy hay không
int ktra(int n){
int fib1=1,fib2=1,fib;
while (fib1+fib2 <= n) {
fib = fib1 + fib2;
fib2 = fib1;
fib1 = fib;
}
if(fib==n){
return 0;
}else{
return 1;
}
}
};
int main(){
string kp;// biến in ra kết quả kiểm tra
int n,kiemtra;
fibonacy *fibo;
cout<<"nhap so phan tu cua mang: ";
cin>>n;
int A[n];
for(int i=0; i<n; i++){
cin>>A[i];
}
if((A[0]==1&&A[1]==1)||(A[0]==1&&A[1]==2)||(fibo->ktra(A[0])==0&&fibo->ktra(A[1])==0&&A[0]<A[1])&&fibo->ktra(A[1]-A[0])==0&&A[0]>(A[1]-A[0])){
kp = "la chuoi fibonacy";
for(int i=2; i<n; i++){
if((A[i]==A[i-1]+A[i-2])&&A[i]>A[i-1]){
kp = "la chuoi fibonacy";
}else
kp = "khong phai chuoi fibonacy";
break;
}
}else
kp = "khong phai chuoi fibonacy";
if(n==1){
if(fibo->ktra(A[0])==0||A[0]==1){
cout<<"la chuoi fibonacy";
}else
cout<<"khong phai chuoi fibonacy";
}else
cout<<kp;
}

Nhận xét

Bài đăng phổ biến