题解 | #回文对称数#

回文对称数

https://www.nowcoder.com/practice/5b143af8328f4e42adf5e10397ae44ef

写的好丑,求大佬优化

#include <stdio.h>

int main(void) 
{
    int n = 0; //范围
    scanf("%d", &n);

    int i = 0;
    for(i = 1; i <= n; i++)
    {
        int num = i;   //原数字
        int cn = 0;    //翻转数字
        int k = 1; //翻转时除数
        //除数k按情况取值
        if(num >= 1 && num < 10)
            k = 1;
        else if(num >= 10 && num < 100)
            k = 10;
        else if(num >= 100 && num < 1000)
            k = 100;
        else if(num >= 1000 && num < 10000)
            k = 1000;
        else if(num >= 10000 && num < 100000)
            k = 10000;
        else 
            k = 100000;
        //非10倍数(因为10的倍数必定不是回文)
        if(num % 10 != 0)
        {
            while (num) //翻转
            {
                cn += (num % 10) * k;
                num /= 10;
                k /= 10;
            }
            if(cn == i) //比较
            printf("%d\n", i); 
        }
    }    

    return 0;
}

全部评论

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务