• 一、题目
  • 二、思路
  • 三、代码
  • 总结

一、题目

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述   
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式   
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899
数据规模和约定
  1<=n<=54。

二、思路

先对所有五位数、六位数进行回文数判断,再输出符合条件的回文数中和为n的数字。(两者顺序可颠倒:即可以先判和,再判是否回文。)

判回文:五位数是奇数位,六位数是偶数位,说明我们最好能够对任意一个整数判回文。那么将整数转为字符数组或者字符串将很容易判断。此处采用递归实现。

//递归判断回文数
#include <stdio.h>
#include <iostream>
using namespace std;int judge(string a,int i,int j)
{if((i==j)||(j-i==1&&a[i]==a[j])) //递归出口return 1;else if(a[i]==a[j]){i+=1;j-=1;return judge(a,i,j);}else return 0;
}
int main()
{char str[80]={0};gets(str);int i;for(i=0;str[i]!=0;i++)str[i]=str[i]-'0';printf("%d",judge(a,0,i-1));return 0;
}

数字转字符串

string num2str(int i)
{//将数字转为字符串stringstream ss;ss<<i; return ss.str();
}

三、代码

#include <iostream>
using namespace std;
#include <string>
#include <sstream>int sum=0;string num2str(int i)
{//将数字转为字符串stringstream ss;ss<<i; return ss.str();
}int judge(string a,int i,int j)
{if(j-i==1&&a[i]==a[j]){sum=sum+2*(a[i]-'0');return 1;}if(i==j){sum+=(a[i]-'0');return 1;}else if(a[i]==a[j]){sum=sum+2*(a[i]-'0');i+=1;j-=1;return judge(a,i,j);}else return 0;
}int main()
{int n;cin>>n;string str;int a[80]={0};for(int i=10000;i<1000000;i++){sum=0;str=num2str(i);      if(judge(str,0,str.length()-1)){if(sum==n)printf("%d\n",i);}}return 0;
}

总结

1、回文需要转换为字符数组/字符串,遍历需要转换为整数,判和需要转换为数字。 回文转为数字数组也行,方便判和,但是不好转,递归取位?比较麻烦。

2、string和char a[80]不能相互转化,但是都能引用下标,而string可以直接赋值给另一个字符串,所以以后尽量用string。

3、写回文递归时,可以先在草稿纸上写出递归出口,列出一般情况或者找规律。
参考博客:stringstream

蓝桥杯 BASIC-9 特殊回文数相关推荐

  1. 蓝桥杯-基础练习-特殊回文数

    蓝桥杯-基础练习-特殊回文数 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输 ...

  2. 蓝桥杯系统练习:回文数、特殊回文数

    1.回文数 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. #include <std ...

  3. 【c语言】蓝桥杯基础练习 特殊回文数

    [问题描述] 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . [输入格式] 输入一行,包含一个正整数 ...

  4. 蓝桥杯 ALGO-14 算法训练 回文数

    问题描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  5. [蓝桥杯]基础练习 特殊回文数

    #include<iostream> #include<vector>using namespace std;/* 打印 10000 ~ 1000000里所有回文数及对应各个位 ...

  6. 蓝桥杯 基础练习 BASIC-8 回文数 循环 判断 回文数

    基础练习 回文数 时间限制:1.0s 内存限制:512.0MB 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条 ...

  7. 【蓝桥杯】 算法训练 回文数

    问题描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数 又如:对于10进制数8 ...

  8. 蓝桥杯:基础练习 回文数

    时间限制:1.0s   内存限制:512.0MB 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制 ...

  9. 蓝桥杯 基础练习 特殊回文数

    问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

  10. [Java] 蓝桥杯 BASIC-8 基础练习 回文数

    问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. package algorithm.Lanq ...

最新文章

  1. linux vino vnc,vino-server和vncserver在教学环境中的典型应用
  2. rpm包备份命令linux,RPM常用命令介绍 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. Android cocos2d-x开发(三)之创建Android工程和编译
  4. 三步法搞定CTF中的SQL注入题型
  5. 今日头条加密参数的识别
  6. ajax 提交 .net ispostback不执行,ASP.NET基于Ajax的Enter键提交问题分析
  7. Android 驱动(16)---AOSP如何单独build kernel
  8. 基于表征(Representation)的文本匹配、信息检索、向量召回的方法总结
  9. 说说如何在 Spring 框架中使用 SpEL 表达式
  10. centos7 文件名中文乱码_Linux服务器文件名乱码常见问题
  11. 华为手机计算机不能用,华为手机无法连接电脑(手机助手)怎么办,连接不上...
  12. 从全息投影到全息平台,必须克服7个障碍
  13. 跟领导关系再好,也别做3件小事,嘴欠手贱,煮熟鸭子会飞
  14. HTML5七夕情人节表白网页制作【3D雪花展开相册】HTML+CSS+JavaScript 程序员表白网页 简单的3D相册制作
  15. 公司用的非标普通自动化用单片机还是plc_自动化专业现在吃香吗?
  16. java 乘法 位移_Java 使用位移运算实现乘法
  17. 计算机网络的形成与发展
  18. 2023湖北师范大学计算机考研信息汇总
  19. 工贸企业重大事故隐患判定标准,自2023年5月15日起施行
  20. UG旋钮盖模具设计与加工

热门文章

  1. 通证指数:ChaiNext系列指数基金上线
  2. (转F001) Rust : 解引用,自动解引用
  3. (转)百度金融联合多方发布国内首单区块链证券化项目 发行规模超4亿
  4. Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障!
  5. mysql实现了四种通信协议_MySQL 通信协议
  6. 【语音合成】基于matlab两端音频合成【含Matlab源码 1490期】
  7. 【绿豆识别】基于matlab形态学绿豆计数【含Matlab源码 1113期】
  8. 【物理应用】基于matlab Q学习无线体域网路由方法【含Matlab源码 264期】
  9. python复制csv数据_如何使用Python将CSV数据复制到现有xlsx文件
  10. 奥鹏秋季计算机基础,14秋季奥鹏东北师范大学计算机应用基础离线作业