题解 | #回文对称数#
回文对称数
https://www.nowcoder.com/practice/5b143af8328f4e42adf5e10397ae44ef
#include <stdio.h>
#include <math.h>
typedef unsigned int uint;//重命名
int main()
{
uint n = 0;
while (1 == scanf("%u", &n))
{
for (uint i = 1; i <= n; i++)
{
if (i < 10)
{
// 个位数都是回文数
printf("%u\n", i);
}
else
{
// 获取数字i的位数
uint count = 1;
uint tmp = i;
while (tmp /= 10)
{
count++;
}
// 获取回文数
tmp = i;
// 创建一个回文数
uint sum = 0;
// 创建一个除数
uint mod = pow(10, count - 1);
// 创建一个乘数
uint mul = 1;
while (mod)
{
// tmp%mod表示当前数字的最高位上的数字是多少
sum += (mul * (tmp / mod));
tmp %= mod;
mul *= 10;
mod /= 10;
}
// 判断回文数与数字i是否相等
if (i == sum)
{
printf("%u\n", i);
}
}
}
}
return 0;
}
查看1道真题和解析