题解 | #回文对称数#

回文对称数

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;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务