题解 | #回文对称数#

回文对称数

https://ac.nowcoder.com/acm/problem/22169

我觉得对于初学者来说难点在于如何把数字一位位地取出来。

一种比较通用的方法是将它对10取模,然后除以十(相当于舍去个位,原来的十位成为新的个位,以此类推)。

由于不清楚数字的位数,使用 while 循环的同时利用 C++ 非 00 即为真的特性判断是否取完即可。

使用取出来的低位作为高位构造一个新数,如果与旧数相同说明旧数是回文数

需要特判的是 i<10i<10 的情况

#include<stdio.h>
int n;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        int t=i,a=0;
        while(t){
            a*=10;
            a+=t%10;
            t/=10;
        }
        if(a==i||i<10) printf("%d\n",i);
    }
}
题解 文章被收录于专栏

https://ayx.moefox.tech/

全部评论

相关推荐

07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
完美的潜伏者许愿简历...:隐藏信息被你提取出来了,暗示,这就是暗示
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务