回文序列 c语言网易编程,[蓝桥杯][历届试题]回文数字 (C语言代码)最简洁的解法...

解题思路:刚来这个网站不久,看了前辈们写的题解,感觉有点沉长,题目种说5位数和6位数的,并且从小到大;我直接按顺序遍历10000到1000000(不包括)之间的数,把么一个数就求其回文和给位数字之和来判断时候复合要求;判断回文:数组也可以做到,但是在本题种使用本人的做法可以简单的将判断回文和求个位数字之和一起方便求得;比如给出1221:1221%10=1 ->1221/10=122 -> 1*10+122%10=12 ->122/10=12

->12*10+12%10=122 -> 12/10=1 -> 122*10+1%10=1221  得到1221与原来给出得相等;

在举个反例:123:123%10=3 -> 123/10=12 -> 3*10+12%10=32 -> 12/10=1 ->32*10+1%10=321;

123 != 321  故不是回文数;

求个位数字之和只用在求回文得时候 每次取余得到得数累加求和即可。

(刚开始使用这个,格式什么的还不会设置,望理解,谢谢)

注意事项:在判断回文的时候,记得用一个临时变量代替正在遍历的数,不然会影响遍历顺序,导致程序出错。

参考代码:#include 

int main(void)

{

int n, flag = 1;

scanf("%d", &n);

for(int i = 10000; i 

{

int t = i, num = 0, sum = 0;

while(t>0)

{

num = num*10 + t%10;

sum += t%10;

t /= 10;

}

if(num==i && sum==n)

{

flag = 0;

printf("%d\n", i);

}

}

if(flag)

{

printf("-1\n");

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值