怎么用C++实现回文数字
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"怎么用C++实现回文数字",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C++实现回文数字"吧!题目描述观察数字:12321,
千家信息网最后更新 2025年01月19日怎么用C++实现回文数字
这篇文章主要讲解了"怎么用C++实现回文数字",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C++实现回文数字"吧!
题目描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899499994589985598895679976688886697796769967778877787787796697859958868868877778886688895598949949958859967769976679985589994499
解题思路:
题目要求的是5位或6位的回文数的所有位的和是给出的数字。
第一种方法:可以循环遍历所有数字,只用遍历前三位即可,后面两位或三位可以直接根据前面判断。
第二种方法,思想相同,使用深搜,确定前三位数字后,判断所有位上的和是否为所给出的数字。
标记一下符合条件的数的个数,如果没有符合条件的数,输出-1。
AC代码:
#includeconst int N = 20;int a[N], n, temp;void dfs1(int x) { if(x==4) { if((a[1]+a[2])*2+a[3]==n) { temp++; printf("%d%d%d%d%d\n" ,a[1], a[2], a[3], a[2], a[1]); } return ; } if(x!=1) { a[x] = 0; dfs1(x+1); } for(int i=1; i<10; i++) { a[x]=i; dfs1(x+1); }}void dfs2(int x) { if(x==4) { if((a[1]+a[2]+a[3])*2==n) { temp++; printf("%d%d%d%d%d%d\n" ,a[1], a[2], a[3], a[3], a[2], a[1]); } return ; } if(x!=1) { a[x] = 0; dfs2(x+1); } for(int i=1; i<10; i++) { a[x]=i; dfs2(x+1); }}int main() { temp = 0; scanf("%d", &n); dfs1(1); dfs2(1); if(temp==0) printf("-1\n"); return 0;}
感谢各位的阅读,以上就是"怎么用C++实现回文数字"的内容了,经过本文的学习后,相信大家对怎么用C++实现回文数字这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
数字
回文
C++
输出
整数
条件
学习
输入
相同
内容
思路
数位
方法
题目
从小到大
个数
之和
从小
代码
十进制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
无线传感器网络安全隐患
宝塔创建站点无法创建数据库
暴雪亚洲服务器是什么机器
天下三退魔服务器
苏旗网络技术
大海战2为什么进不去服务器
软件开发成本核算机制
服务器清洗
关于网络安全管理的函
海外服务器测试
开发股票软件开发
预防发生危害网络安全的事件
电脑网络技术文案温柔
互联网科技商标类别
网站服务器可以自动开启吗
医疗一体化服务器
欧洲要建立网络安全
肿瘤免疫 分析 数据库
互联网科技电商资讯
广州莱宾网络技术有限公司
直播卖货数据库
什么是软件开发三权分立
硬盘没有系统的服务器怎么办
数据库传递与非传递
sql数据库技术 总结
连接数据库常用的三个接口对象
大专网络技术专业是拉网线吗
软件开发的法律责任
dnf服务器灰色
软件开发人员招聘面试