题目:
寻找并输出11~999之间的数m,它满足m,和均为回文数。
分析:
11满足,121满足,1331满足,则11满足该要求。
解决两个问题:1设置一个判断是否为回文的函数。2遍历11到999.
设置回文函数:
用求余除以十的方法,找到各位数。再把他们反过来拼好,判断与原数是否相等。
反序用除以十取余的方法。最早取出来的为作为最高位,最晚取出来的数,作为最低位。
判断n是否为回文数。
bool symm(unsigned n) {
unsigned i = n;
unsiggned m = 0;
while(i>0){
m = m * 10 + i % 10;
i /= 10;
}
return m == n;
}
m是倒序后的数,n是倒序前的数。设置好函数类型为布尔类型。
全部代码:
#include<iostream>
using namespace std;
bool symm(unsigned n) {
unsigned i = n;
unsigned m = 0;
while (i > 0) {
m = m * 10 + i % 10;
i /= 10;
}
return m == n;
}
int main() {
for(unsigned m = 11; m < 1000; m++)
if (symm(m) && symm(m * m) && symm(m * m * m)) {
cout << "m = "<< m;
cout << " m * m ="<< m * m;
cout << " m * m * m ="<< m * m * m<<endl;
}
return 0;
}
运行结果: