题解 | #回文对称数#
回文对称数
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; }