牛客网刷题 | BC97 回文对称数

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。

输入描述:

输入一个整数n(1 <= n <= 100000)

输出描述:

从1开始按从小到大的顺序输出所有回文数

示例1


思路 : 

可以使用用数组存放数据的操作

将1-100000中所有的数字都遍历出来

然后判断数组的下标 是否相等

------------------------------------------------

操作起来有点复杂 还是用取模和取余运算吧

其中要注意的是 9999 99999 这种大的数字 9889 98889 这种也算是回文数

问题定义

输入:一个整数 𝑛n,范围是 1≤𝑛≤1000001≤n≤100000。

输出:所有不超过 𝑛n 的回文数,按从小到大的顺序输出。

算法设计

遍历:从 1 开始遍历到 n,检查每个数是否为回文数。

回文数检查:对于每个数 x,我们可以通过以下步骤检查它是否是回文数:

转换为字符串:将整数 x 转换为字符串。

反转字符串:反转字符串。

比较:比较原始字符串和反转后的字符串是否相同。

优化:实际上,我们不需要将整个字符串反转,只需要反转一半,然后比较前半部分和后半部分是否相同。

数据结构选择

使用一个整数变量来存储当前遍历的数。

使用一个字符串来存储整数的字符表示形式。

算法实现

初始化:设置一个整数变量 i 从 1 开始。

循环:使用 for 循环遍历从 1 到 n 的所有整数。

转换为字符串:将当前整数 i 转换为字符串。

反转字符串:编写一个函数来反转字符串的一半。

比较:比较原始字符串和反转后的字符串。

输出:如果相等,说明是回文数,输出该数。


 代码 1 :

/*      思路 : 可以使用用数组存放数据的操作将1-100000中所有的数字都遍历出来然后判断数组的下标 是否相等------------------------------------------------操作起来有点复杂 还是用取模和取余运算吧
*/// # include <stdio.h>
// int main ()
// {
//     int a,b,c,d,e,f;//     return 0;
// }# include <stdio.h>
int main ()
{int n = 0;scanf("%d",&n);for(int i=1;i<=n;i++){if (i<10) {printf("%d\n",i);}else if (i<100) {if (i%10==i/10) {printf("%d\n",i);}}else if (i<1000) {if (i%10==i/100) {printf("%d\n",i);}}else if (i<10000) {if (i%10==i/1000&&i/100%10==i/10%10) //9999 9889 包括这样{printf("%d\n",i);}}else if (i<100000) {if (i%10==i/10000&&i/1000%10==i/10%10) //99999 98889{printf("%d\n",i);}}}return 0;
}

代码 2 :

使用数组的方法来写

int main ()
{int n,i,a,b[10],c=0;scanf("%d",&n);for(i=1;i<=n;i++){a=i;\\把数保存到一个变量中for(int k=0;;k++){b[k]=a%10;\\将每一位数保存到数组中a=a/10;c=c*10+b[k];if(a==0)break;}if(c==i)printf("%d\n",i);}return 0;
}

代码 3 :

相对复杂

#include <stdio.h>
#include <string.h>char *my_itoa(int value, char *str, int radix)
{static char dig[] ="0123456789""abcdefghijklmnopqrstuvwxyz";int n = 0, neg = 0;unsigned int v;char *p, *q;char c;/* 负数:十进制直接在前面加负号,其它进制用补码 */if (radix == 10 && value < 0){v = -value;neg = 1;}else{v = value;}/* 其它进制的负数转为unsigned int类型,即取了补码 */do{str[n++] = dig[v % radix];v /= radix;} while (v);if (neg)str[n++] = '-';str[n] = '\0';/* 字符串反转 */for (p = str, q = p + (n - 1); p < q; ++p, --q)c = *p, *p = *q, *q = c;return str;
}void fun(long n)
{char num[7];int i, j;my_itoa(n, num, 10); //将整形n,以十进制存入num中;for (i = 0, j = strlen(num) - 1; i <= j; i++, j--){if (num[i] != num[j])break;}if (i >= j){printf("%d ", n);}
}int main()
{long n = 0;long i = 0;scanf("%ld", &n); // 12321;for (i = 1; i <= n; i++)fun(i);return 0;
}

扩展:取模与取余

m % 10:取模运算,用于获取数字m的最低位。

m /= 10:整数除法运算,用于去掉数字m的最低位。

之前文章里面有提过

这里就不赘述了

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

锁相环的一些学习笔记--(1)

下图两组1.2.3可以对应起来&#xff1b; 一些分析&#xff1a; 1.根据这个可知最后vco_voltage停在0.5v 参考资料&#xff1a; 1. Matlab https://www.bilibili.com/video/BV1bR4y1Z7Xg/?spm_id_from333.1296.top_right_bar_window_history.content.click&vd_source555…

如何将Windows PC变成Wi-Fi热点?这里提供详细步骤

序言 Windows 10和Windows 11都有内置功能,可以将你的笔记本电脑(或台式机)变成无线热点,允许其他设备连接到它并共享你的互联网连接。以下是操作指南。 由于Windows中隐藏的虚拟Wi-Fi适配器功能,你甚至可以在连接到另一个Wi-Fi网络或无线路由器时创建Wi-Fi热点,通过另…

鲁教版七年级数学上册-笔记

文章目录 第一章 三角形1 认识三角形2 图形的全等3 探索三角形全等的条件4 三角形的尺规作图5 利用三角形全等测距离 第二章 轴对称1 轴对称现象2 探索轴对称的性质4 利用轴对称进行设计 第三章 勾股定理1 探索勾股定理2 一定是直角三角形吗3 勾股定理的应用举例 第四章 实数1 …

Kafka 安装教程和基本操作

一、简介 Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于 zookeeper 协调的分布式日志系统&#xff08;也可以当做 MQ 系统&#xff09;&#xff0c;常见可以用于 web/nginx 日志、访问日志&#xff0c;消息服务等等…

基于YOLO算法实现网球运动实时分析(附源码)

大家好&#xff0c;我是小F&#xff5e; 今天给大家介绍一个计算机视觉实战的项目。 该项目使用YOLO算法检测球员和网球&#xff0c;并利用cnn提取球场关键点。 进而分析视频中的网球运动员&#xff0c;测量他们的速度、击球速度和击球次数。 使用win10电脑&#xff0c;Python …

【源码】java + uniapp交易所源代码/带搭建教程java交易所/完整源代码

java uniapp交易所源代码/带搭建教程java交易所/完整源代码 带简洁教程&#xff0c;未测 java uniapp交易所源代码/带搭建教程java交易所/完整源代码 - 吾爱资源网

【古董技术】ms-dos应用程序的结构

序 制定一个MS-DOS应用程序计划需要认真分析程序的大小。这种分析可以帮助程序员确定MS-DOS支持的两种程序风格中哪一种最适合该应用程序。.EXE程序结构为大型程序提供了好处&#xff0c;因为所有.EXE文件之前都有额外的512字节&#xff08;或更多&#xff09;的文件头。另一方…

C++第十七弹---string使用(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、标准库中的string类 1.1、string类的常用接口说明 1.1.1、string类对象的修改操作 1.1.2、string类对象非成员函数重载 总结 1、标准库中的…

牛客热题:有效括号

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;有效括号题目链接方法一&#x…

Mycat+Mysql搭建数据集群实现数据分片存储

前言 MyCAT介绍 * 一个彻底开源的,面向企业应用开发的“大数据库集群”; * 支持事务、ACID、可以替代MySQL的加强版数据库; * 一个可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群; * 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL; * 一个新颖…

2024.5.1学习记录

1、代码随想录&#xff1a;贪心刷题 2、react 高级使用( hoc render、props、函数组件、serState 传送门等) 3、游山玩水

《拯救大学生课设不挂科第四期之蓝桥杯是什么?我是否要参加蓝桥杯?选择何种语言?如何科学备赛?方法思维教程》【官方笔记】

背景&#xff1a; 有些同学在大一或者大二可能会被老师建议参加蓝桥杯&#xff0c;本视频和文章主要是以一个过来人的身份来给与大家一些思路。 比如蓝桥杯是什么&#xff1f;我是否要参加蓝桥杯&#xff1f;参加蓝桥杯该选择何种语言&#xff1f;如何科学备赛&#xff1f;等…

JavaEE之线程(7)_单例模式(设计模式概念、单例模式优点、懒汉、饿汉模式)

一、什么是设计模式&#xff1f; 单例模式是设计模式中较为常见的一种。那么&#xff0c;什么是单例模式&#xff1f; 设计模式&#xff08;Design Pattern&#xff09;都是一些相对优秀的解决方案&#xff0c;很多问题都是典型的、有代表性的问题&#xff0c;学习设计模式&am…

为什么本科毕业后我坚定地选择了就业而不是考研?

大家好&#xff0c;我是小布丁。今天来聊聊我为什么本科毕业后选择了就业而不是考研。 在整个大学期间&#xff0c;我被亲戚拷问最多的问题就是&#xff1a;准备考研吗&#xff1f;相信很多大学生都遇到过这种情况吧。 如果你说准备还好&#xff0c;亲戚大概率就不会问下去&a…

元组推导式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 使用元组推导式可以快速生成一个元组&#xff0c;它的表现形式和列表推导式类似&#xff0c;只是将列表推导式中的“[]”修改为“()”。例如&#xf…

python深入解析字符串操作的八大神技

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、字符串的长度与切片 示例代码 二、去除多余的空格 示例代码 三、字符串的开头与包含…

元组的创建和删除

目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组&#xff08;tuple&#xff09;是Python中另一个重要的序列结构&#…

关于堆排序

今天我们不刷力扣了&#xff0c;我们来复习&#xff08;手撕&#xff09;一下数据结构中的八大排序算法之一&#xff0c;堆排序 基本概念&#xff1a; 堆是一种特殊的树形数据结构&#xff0c;即完全二叉树。 堆分为大顶堆和小顶堆&#xff1a; 大顶堆&#xff1a;每个节点的值…

OrangePi KunPengPro | 开发板开箱测评之学习与使用

OrangePi KunPengPro | 开发板开箱测评之学习与使用 时间&#xff1a;2024年5月23日20:51:12 文章目录 OrangePi KunPengPro | 开发板开箱测评之学习与使用概述1.参考2.资料、工具3.使用3-1.通过串口登录系统3-2.通过SSH登录系统3-3.安装交叉编译工具链3-4.复制文件到设备3-5.第…

【组合数学】常考试题答案

一、单项选择题&#xff08;每小题3分&#xff0c;共15分&#xff09; 1. 用3个“1”和4个“0”能组成&#xff08; &#xff09;个不同的二进制数字。 A. 35 B. 36, C. 37, D. 38 2. 整除300的正整数的个数为&#xff08;  &#xff09;。 A. 14…