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ố Kaprekar hay không.
Lấy một số. Tìm bình phương của số đó. Chia bình phương thành hai phần. Nếu tổng hai phần bằng số ban đầu, đó là số Kaprekar.
Các bước giải quyết
- Khởi tạo N.
- Tìm bình phương của N.
- Đếm số chữ số của bình phương.
- Chia bình phương cho 10, 100, 1000... đến số chữ số:
- Kiểm tra tổng hai phần có bằng N không.
- Trả về True nếu bằng nhau, ngược lại False.
Ví dụ
Dưới đây là mã nguồn C++:
#include <bits/stdc++.h>
using namespace std;
bool isKaprekarNumber(int n) {
if (n == 1) {
return true;
}
int nSquare = n * n, digitsCount = 0;
while (nSquare) {
digitsCount++;
nSquare /= 10;
}
nSquare = n * n;
for (int i = 1; i < digitsCount; i++) {
int parts = pow(10, i);
if (parts == n) {
continue;
}
int sum = nSquare / parts + nSquare % parts;
if (sum == n) {
return true;
}
}
return false;
}
int main() {
int n = 25;
string result = isKaprekarNumber(n) ? "True" : "False";
cout << result << endl;
return 0;
}Kết quả
Nếu bạn chạy mã trên, kết quả sẽ là:
False
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.