一、问题描述:
寻找并输出11~999的数m,它满足m、m2和m3均为回文数。
回文数
所谓回文数是指其各位数字左右对称的整数。例如:121、676、94249等。满足上述条件的数如m=11,m2=121,m3=1331.
二、设计思路:
- 从11~999遍历每个数;
- 判断是否为回文数,用除以10取余的方法从最低位开始取出各位数字,然后低位充当高位,与原数相比是否相等;
- 是回文数则输出,不是则判断下一个,直到999结束。
三、流程图:
四、伪代码实现:
while n> 0 do m = m*10 + i%10 n/= 10 end if m=n then n是回文数 for m=11 to 999 if m、m*m、m*m*m是回文数 then 输出m
五、代码实现:
1 #include <iostream> 2 using namespace std; 3 4 //判断n是否为回文数 5 bool symm(unsigned n)//unsigned单独使用时默认为unsigned int 6 { 7 unsigned i = n; 8 unsigned m = 0; 9 while (i > 0) 10 { 11 m = m * 10 + i % 10; 12 i /= 10; 13 } 14 return m == n; 15 } 16 17 int main() 18 { 19 for (unsigned m = 11; m < 1000; m++) 20 { 21 if (symm(m) && symm(m * m) && symm(m * m * m)) 22 { 23 cout << "m=" << m; 24 cout << " m * m=" << m * m; 25 cout << " m * m * m" << m * m * m << endl; 26 } 27 } 28 return 0; 29 }
标签:11,10,999,unsigned,symm,寻找,回文 From: https://www.cnblogs.com/tljx-cen/p/17334462.html