Đếm xem trong dãy có bao nhiêu số có tổng chữ số là số fibo

Nhờ mn kiểm tra hộ sai ở đâu ạ. Em cảm ơn!

#include<bits/stdc++.h>

using namespace std;
long long a[100001], n;
void nhap() {
    for (long long i = 1; i <= n; i++) cin >> a[i];
}
long long tcs() {
    long long s = 0;
    while (n > 0) {
        s = s + n % 10;
        n = n / 10;
    }
    return s;
}
bool Fibo() {
    if (n < 0) return false;
    long long x = 0, y = 1, z = 0;
    while (z < n) {
        x = y;
        y = z;
        z = x + y;
    }
    if (z == n) return true;
    return false;
}
long long dem() {
    long long dem = 0;
    for (long long i = 1; i <= n; i++)
        if (Fibo(tcs(a[i]))) dem++;
    return dem;
}
int main() {
    cin >> n;
    nhap();
    cout >> dem();
    return 0;
}

Sơ qua:

  1. cout >>. Không đúng rồi.
  2. for chạy từ 1. Không ổn rồi.
5 Likes

tôi không biết c++, nhưng tôi thấy chỗ này kỳ kỳ

hàm Fino() và tcs() của bạn thì không có param, nhưng khi gọi bạn lại truyền param vào. Tôi không chắc lắm!
p/s: Vì là hàm boolean trả về true, false nên bạn nên đặt là isFibo() thay vì Fibo() //thói quen của tôi thôi

4 Likes

uk chuẩn rồi, mảng bắt đầu từ 0 mà

2 Likes

5 posts were merged into an existing topic: Lỗi ở file basic_string

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?