一、题目要求
在11-999之间寻找一个数m,其中m的平方、m的立方均是回文数,依次输出他们
输出格式 m 次数 对应的m 每输一个换一次行
Input example:
无
Output example:
m 2 -> 11
m 3 -> 11
m 2 -> 22
m 2 -> 26
m 2 -> 101
m 3 -> 101
m 2 -> 111
m 3 -> 111
m 2 -> 121
m 2 -> 202
m 2 -> 212
m 2 -> 264
m 2 -> 307
m 2 -> 836
二、题目分析
1)需求:
在某范围内找出能够在特定情况下构成回文数的一些数,并按特定格式输出
2)思路:
1. 11-999范围内 --> 循环结构;
2. m的平方、m的立方 ---> power函数的利用 调用内置库 include<cmath> 中的pow(double x, double y) ;
3. 均是回文数 ---> 构建判断回文数的函数 is_Palindrome(int n);
4. 按 m 次数 m对应的数 特定格式输出 ---> 调用标准库std::cout按格式打印
3) 注意事项:
1. 每输出一条语句需要换行
2.注意输出格式
3. 代码实现
此次代码实现,利用了函数模块化分装,各个部分相对比较清晰,小伙伴们若有需要某一部分代码,可快速定位查看,注释比较完整,代码如下:
/* 在11-999之间寻找一个数m,其中m的平方、m的立方均是回文数,依次输出他们 */
//输出格式 m 次数 对应的m 每输一个换一次行
#include<iostream>
#include<cmath> //调用pow,判断j的1 2 3次幂是否为回文数
using namespace std;
int is_Palindrome(int num); //判断是否为回文数
void print_m(); //打印m
int main()
{
print_m();
return 0;
}
//判断回文数
int is_Palindrome(int num)
{
//定义反位后的数m,判断反位的数与原数相同的标志flag,记录原数的数n
int m = 0, flag = 0, n = num;
while (n)
{
//换出反过来后的数:剔出低位对应的数,并乘10进位成高位
m = n % 10 + m * 10;
//便于从低位到高位依次得出位上的数
n /= 10;
}
if (num == m)
flag = 1;
//判断是否相同的标志,若相同则为1,反之为0
return flag;
}
//遍历11-999,寻找符合要求的回文数并打印
void print_m()
{
int i, Pal[1000], len = 0, pow2 = 1, pow3 = 1;
for (i = 11; i < 1000; i++)
{
pow2 = pow(i, 2);
pow3 = pow(i, 3);
if (is_Palindrome(pow2))
{
cout << "m 2 -> " << i << endl;
}
if (is_Palindrome(pow3))
{
cout << "m 3 -> " << i << endl;
}
}
}
标签:11,输出,int,999,寻找,符合,格式,回文
From: https://blog.csdn.net/2301_79475128/article/details/136953621