Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số Keith trong C++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình kiểm tra xem số cho trước có phải là Số Keith hay không.

Số N được gọi là số Keith nếu nó xuất hiện trong dãy được sinh từ các chữ số của nó. Dãy có N số hạng đầu là các chữ số của N, các số hạng tiếp theo được tính đệ quy là tổng của N số hạng trước.

Các bước giải quyết

  • Khởi tạo số N.
  • Khởi tạo vector rỗng lưu dãy số.
  • Đếm chữ số và thêm từng chữ số vào vector.
  • Đảo ngược vector chữ số.
  • Khởi tạo biến nextElement = 0.
  • Viết vòng lặp cho đến khi nextElement >= N:
    • Tính nextElement = tổng N số hạng cuối.
    • Thêm nextElement vào vector.
  • Trả về true nếu nextElement == N, ngược lại false.

Ví dụ

Dưới đây là mã nguồn C++:

#include <bits/stdc++.h> 
using namespace std; 

bool isKeithNumber(int n) { 
    vector<int> elements; 
    int temp = n, digitsCount = 0; 
    while (temp > 0) { 
        elements.push_back(temp % 10); 
        temp = temp / 10; 
        digitsCount++; 
    } 
    reverse(elements.begin(), elements.end()); 
    int nextElement = 0, i = digitsCount; 
    while (nextElement < n) { 
        nextElement = 0; 
        for (int j = 1; j <= digitsCount; j++) { 
            nextElement += elements[i - j]; 
        } 
        elements.push_back(nextElement); 
        i++; 
    } 
    return nextElement == n; 
} 

int main() { 
    isKeithNumber(43) ? cout << "Yes" << endl : cout << "No" << endl; 
    isKeithNumber(14) ? cout << "Yes" << endl : cout << "No" << endl; 
    isKeithNumber(197) ? cout << "Yes" << endl : cout << "No" << endl; 
    return 0; 
}

Kết quả

Nếu bạn chạy mã trên, kết quả sẽ là:

No Yes Yes

Kết luận

Nếu bạn có bất kỳ thắc mắc nào về hướng dẫn này, hãy để lại bình luận bên dưới.