c++中寻找并输出11~999之间的数m,它满足m、m^2和m^3均为回文数,不使用palindrome函数
时间: 2024-05-30 11:16:19 浏览: 12
#include <stdio.h>
int is_palindrome(int n) {
int len = 0, i, j;
char str[10];
while (n > 0) {
str[len++] = n % 10 + '0';
n /= 10;
}
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0;
}
}
return 1;
}
int main() {
int m, m2, m3;
for (m = 11; m <= 999; m++) {
m2 = m * m;
m3 = m * m * m;
if (is_palindrome(m) && is_palindrome(m2) && is_palindrome(m3)) {
printf("%d\n", m);
}
}
return 0;
}
相关问题
不使用palindrome,c++中寻找并输出11~999之间的数m,它满足m、m^2和m^3均为回文数
#include <stdio.h>
int is_palindrome(int n) {
int reversed = 0, original = n;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return original == reversed;
}
int main() {
int m;
for (m = 11; m <= 999; m++) {
int m_squared = m * m;
int m_cubed = m_squared * m;
if (is_palindrome(m) && is_palindrome(m_squared) && is_palindrome(m_cubed)) {
printf("%d\n", m);
}
}
return 0;
}
编写程序,掌握单继承程序编写。数学问题,已知一个palindromic类,可以判断一个数是否为回文数,将palindromic类作为基类,派生出一个新类,可以实现某一范围内回文数的判断,如:寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。
非常好的问题!我可以帮助您解决这个问题。以下是您所需的单继承程序的示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
class palindromic {
public:
bool is_palindrome(int n) {
string str = to_string(n);
int len = str.length();
for (int i = 0, j = len - 1; i < j; ++i, --j) {
if (str[i] != str[j]) {
return false;
}
}
return true;
}
};
class derived : public palindromic {
public:
void find_palindromes() {
for (int i = 11; i <= 999; ++i) {
if (is_palindrome(i) && is_palindrome(i*i) && is_palindrome(i*i*i)) {
cout << i << endl;
}
}
}
};
int main() {
derived d;
d.find_palindromes();
return 0;
}
```
在上面的代码中,我们利用单继承的方式将派生类 derived 继承自基类 palindromic。派生类 derived 重载了 palindromic 类中的 is_palindrome 函数,以便可以在某一范围内找到回文数。通过调用派生类中的 find_palindromes 函数,我们可以输出11~999之间满足条件的数。希望这可以帮助您解决您的问题!