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

news2024/12/26 22:12:42

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

        专栏如下:                 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.coloradmin.cn/o/1697114.html

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

相关文章

线程池,日志

所要用到的知识点&#xff1a; 多线程的创建 生产消费模型&#xff0c; 线程锁 条件变量 代码&#xff1a; 线程池日志

留守儿童|基于SprinBoot+vue的留守儿童爱心网站(源码+数据库+文档)

留守儿童爱心网站 目录 基于SprinBootvue的留守儿童爱心网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&…

gnocchi学习小结

背景 总结gnocchi 4.4版本gnocchi-metricd工作流程 入口 gnocchi.cli.metricd metricd stop after processing metric默认为0&#xff0c;调servicemanager run MetricdServiceManager __init__ 服务逻辑封装到MetricdServiceManager初始化中 主要由MetricProcessor, Met…

Linux自动重启系统脚本测试工具

前言 脚本允许用户指定重启的次数和重启间隔时间&#xff0c;并自动生成相应的定时任务。通过使用这个脚本&#xff0c;系统管理员可以轻松地设置重启测试。每次重启操作都会被记录下来&#xff0c;以便用户随时了解测试情况。 一、脚本 #!/bin/bashif [ "$1" &qu…

[数组查找]1.图解线性查找及其代码实现

线性查找 线性查找是一种在数组中查找数据的算法。与二分查找不同&#xff0c;即便数据没有按顺序存储&#xff0c;也可以应用线性查找。线性查找的操作很简单&#xff0c;只要在数组中从头开始依次往下查找即可。虽然存储的数据类型没有限制&#xff0c;但为了便于理解&#x…

【机器智能】:AI机器学习在医疗服务的广泛应用与实践案例

目录 引言一&#xff0c;什么是机器学习二&#xff0c;AI在医学影像诊断中的应用三&#xff0c;AI在个性化治疗方案设计中的应用四&#xff0c;医疗图像识别技术五&#xff0c;医疗语言识别技术六&#xff0c;结语 引言 随着人工智能&#xff08;AI&#xff09;和机器学习技术…

[书生·浦语大模型实战营]——第三节:茴香豆:搭建你的 RAG 智能助理

0.RAG 概述 定义&#xff1a;RAG&#xff08;Retrieval Augmented Generation&#xff09;技术&#xff0c;通过检索与用户输入相关的信息片段&#xff0c;并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…

抖音运营_抖音推荐算法的机制

目录 一 抖音流量推荐算法机制 二 4大关键指标 三 完播率 1 黄金3秒 2 内容严谨 3 期待感 4 用户痛点 5 通俗易懂 四 转发量 1 分享需求 2 分享快乐 3 共情表达 4 正义传播 五 评论量 1 话题性 2 争议性 3 参与感 4 评论回评 六 点赞量 1 情感共鸣 2 用户喜…

Asp .Net Core 系列:集成 CAP + RabbitMQ + MySQL(含幂等性)

简介 官网&#xff1a;https://cap.dotnetcore.xyz/ CAP 是什么&#xff1f; 是一个 EventBus&#xff0c;同时也是一个在微服务或者 SOA 系统中解决分布式事务问题的一个框架。它有助于创建可扩展&#xff0c;可靠并且易于更改的微服务系统。 什么是 EventBus&#xff1f;…

Pytorch深度学习实践笔记6(b站刘二大人)

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

项目管理-人力资源管理

目录 一、概述 二、人力资源计划编制 2.1 概述 2.2 层次结构图 2.3 分配任务矩阵 三、组建项目团队 3.1 概述 3.2 内部谈判 3.3 事先分派 3.4 外部招聘 3.5 虚拟团队 3.6 总结 四、项目团队建设 4.1 概述 4.2 团队发展过程 4.2.1 概述 4.2.2 形成期 4.2.3 震…

【每日力扣】84. 柱状图中最大的矩形 与 295. 数据流的中位数

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 84. 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为…

我用LLaMA-Factory微调大模型来实现商品评论情感分析,准确率高达91.70%

大家好&#xff0c;我是程序锅。 最近在modelscope上闲逛的时候&#xff0c;在数据集板块发现有一个商品评论情感预测数据集。这个数据集源自一个比赛&#xff0c;它的目的是为了预测电商平台顾客的评论是好评还是差评。 数据示例如下所示&#xff08;其中0代表差评&#xff…

电子电器架构 - AUTOSAR软件架构介绍

电子电器架构 - AUTOSAR软件架构介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十)- JUC(6)

目录 wait , notify wait vs sleep 正确使用方法 同步保护性暂停 join的源码 Future 异步生产者/消费者模型 定义 Park & Unpark 原理 wait , notify 小故事小南需要烟才能工作&#xff0c;但它又要占这锁让别人无法进来。那么这个时候开一个waitSet相当于就是休…

解决vue3项目vite打包忽略.vue扩展名

项目打包时报could not relolve “...”&#xff0c;因为vite已不再默认忽略.vue扩展名。 解决方法如下&#xff1a; 在vite.config.js中配置vite使其忽略 .vue 扩展名&#xff08;不建议忽略&#xff09; 注意&#xff1a;即使忽略了.vue文件&#xff0c;在实际写的时候也要加…

【Linux】为 VMware 的 Linux 系统(CentOS 7)设置静态IP地址

文章目录 准备工作查看 子网掩码 和 网关IP确认准备设置的虚拟机端口没有被占用 调整设置编辑配置文件配置文件说明 完成配置&#xff0c;准备测试使用命令终端连接服务器 我是一名立志把细节说清楚的博主&#xff0c;欢迎【关注】&#x1f389; ~ 原创不易&#xff0c; 如果有…

OS复习笔记ch6-1

死锁的原理 定义 一组进程中&#xff0c;其中每个进程因等待事件而阻塞&#xff0c;且所等待的事件只能被这组进程中的另一阻塞进程激发称之为死锁。 举例如下 四个车辆希望紧迫的希望能很快通过&#xff0c;每辆车需要两个象限的资源&#xff0c;然而四个车都只得到一个象…

使用 Django Rest Framework 构建强大的 Web API

文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework&#xff08;DRF&#xff09;是一个强大的工具&#xff0c;用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能&#xff0c;包括序列化…

揭秘Kafka从入门到精通,架构最全详解

Kafka架构最全详解 Kafka&#xff0c;作为关键消息中间件&#xff0c;广泛应用于大型架构与顶尖企业。本篇深入解析Kafka架构&#xff0c;掌握其核心技术要点。 Kafka Apache Kafka 是一个分布式发布-订阅消息系统&#xff0c;由LinkedIn开创的分布式发布-订阅消息系统&#x…