Trong hướng dẫn này, chúng tôi sẽ viết một chương trình để kiểm tra xem số đã cho có phải là Số Keith hoặc không.
Số n được gọi là số Keith nếu nó xuất hiện trong dãy được tạo bằng các chữ số của nó. Dãy có n số hạng đầu tiên là chữ số của số n và các số hạng khác được đánh giá đệ quy là tổng của n số hạng trước đó.
Hãy xem các bước để giải quyết vấn đề.
- Khởi tạo số n.
- Khởi tạo các phần tử vectơ trống để lưu trữ chuỗi.
- Đếm các chữ số và thêm mọi chữ số vào vecor.
- Đảo ngược vectơ các chữ số.
- Khởi tạo một biến với 0 được gọi là phần tử tiếp theo.
- Viết một vòng lặp lặp lại cho đến khi phần tử tiếp theo nhỏ hơn n.
- Thêm n chữ số cuối cùng để có phần tử tiếp theo.
- Thêm phần tử tiếp theo vào vectơ.
- Trả về true nếu phần tử tiếp theo bằng n else false.
Ví dụ
Hãy xem mã.
#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; }
Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
No Yes Yes
Kết luận
Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.