蓝桥杯正确的解题姿势

在做算法题的过程中最忌讳的就是上来就一顿乱敲,一开始我就是这样,但随着不断的刷题和老师的指导,总结了自己的刷题方法

示例题目 三角回文数

问题描述
对于正整数 n, 如果存在正整数 k使得 n=1+2+3+...+k=k(k+1)/2 , 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066=1+2+3+...+363

如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数。例如, 66066 是一个回文数, 8778 也是一个回文数。

如果一个整数 nn 既是三角数又是回文数, 我们称它为三角回文数。例如 66066 是三角回文数。

请问, 第一个大于 20220514 的三角回文数是多少?

答案提交
这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

运行限制
最大运行时间:1s
最大运行内存: 256M

1. 读题【不着急实现代码,先理清思路】

通过看题,我们能够大致抽象出应该会用到的方法,不管方法多简单,都尽量写一个函数,这样可读性好一些,不要直接在main函数里面实现某个方法,看着就乱。

这道题我们可以总结可能用到的方法如下:
        1.判断是不是回文数 【用双指针法判断】

        2. 从1到k的值 【优化初始值再暴力循环】

        3. 是否满足题中所给的公式 (k*(k+1)/2)=sum 【不需要算法】  

2. 搭架子

架子搭建好就理理逻辑,看看main函数中的代码逻辑走不走得通

 3. 实现代码

        3.1 双指针法判断回文数【两个指针一个 i 一个 j 两端往中间逼近,不需要考虑字符串是奇数长度还是偶数】

//判断是不是回文数
    public static boolean isNum(int num){
        String val = num+"";
        int i = 0;
        int j = val.length()-1;
        char[] check = val.toCharArray();
        while(i<j){
          if(check[i] != check[j]){
            return false;
          }
          i++;
          j--;
        }
        return true;
    }

        3.2 从1加到k优化

public static int sumToK(int k){
      
      for(int i=1;i<=k;i++){
        res += i;
      }
      return res;
    }

先运行一遍求sumToK(k)比题中给的20220514大的值所对应的k是多少【因为并没有一个sumToK(k) = 202220514】,得到6359,sumToK(6359)=20221620

优化:我们设置初始值为 20221620,这样每次循环就不需要从1加到k了,极大降低时间消耗

public static int sumToK(int k){
      int res = 20221620;
      for(int i=6360;i<=k;i++){
        res += i;
      }
      return res;
    }

 main函数优化: 我们应该先判断 sumToK(k) 是不是回文串而不是先判断是否满足那个公式,因为这样直接可以过滤一大批不合格的数

完整代码

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        //从20220514开始遍历
        
        for(int k=6359;;k++){
          int sum = sumToK(k);
          //先满足是回文串
          if(!isNum(sum)){
            continue;
          }
          //判断是不是我们要找的数
          if(ifFit(sum,k)){
            System.out.println(sum);
            break;
          }
        }

    }
    //判断是不是回文数
    public static boolean isNum(int num){
        String val = num+"";
        int i = 0;
        int j = val.length()-1;
        char[] check = val.toCharArray();
        while(i<j){
          if(check[i] != check[j]){
            return false;
          }
          i++;
          j--;
        }
        return true;
    }
    //返回1到k的和
    public static int sumToK(int k){
      int res = 20221620;
      for(int i=6360;i<=k;i++){
        res += i;
      }
      return res;
    }
    //判断sum和k是否满足 k(k+1)/2
    public static boolean ifFit(int sum,int k){
      return sum==((k*(k+1))/2)?true:false;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记一、Abstract二、引言三、相关工作3.1 基于 Box 的实例分割3.2 基于层级的分割四、提出的方法4.1 图像分割中的层级模型4.2 基于 Box 的实例分割在 Bounding Box 内的层级进化输入的数据…

CentOS7+LAMP+DVWA靶机搭建

一、什么是DVWA Damn Vulnerable Web Application (DVWA)(译注&#xff1a;可以直译为&#xff1a;"该死的"不安全Web应用程序)&#xff0c;是一个编码差的、易受攻击的 PHP/MySQL Web应用程序。 它的主要目的是帮助信息安全专业人员在合法的环境中&#xff0c;练习…

【自动化】selenium配置步骤 | 备份本地资源

1、安装jdk 2、设置环境变量 .1、CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar .2、JAVA_HOME C:\Program Files\Java\jdk1.8.0_231 .3、PATH 新增 %JAVA_HOME%\bin 3、安装chrome 版本&#xff1a;85.0.4183.83 4、禁用chrom…

AOP配置管理

AOP配置管理4&#xff0c;AOP配置管理4.1 AOP切入点表达式4.1.1 语法格式4.1.2 通配符4.1.3 书写技巧4.2 AOP通知类型4.2.1 类型介绍4.2.2 环境准备4.2.3 通知类型的使用前置通知后置通知环绕通知基本使用注意事项返回后通知异常后通知通知类型总结知识点1&#xff1a;After知识…

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

本文目录前言做项目的三大好处强强联手(天狗组合)专栏作者简介专栏的优势后端规划1. SpringBoot 和 SpringCloud 的选择2. Mybatis 和 MybatisPlus 和 JPA 的选择3. MySQL 和 Mongodb 的选择4. Redis 和 RocketMQ5. 后端规划小总结后端大纲提前掌握的知识点一期SpringBoot二期S…

经典文献阅读之--LOCUS 2.0(LiDAR为中心的多传感器LSLAM)

0. 简介 在20年DARPA地下挑战赛中CoSTAR队伍提出了LOCUS这个深度学习模块&#xff0c;在两年后LOCUS2.0出世&#xff0c;LOCUS 2.0包括一种新的基于法线的广义迭代最近点&#xff08;GICP&#xff09;公式&#xff0c;该公式减少了点云对齐的计算时间&#xff0c;一种自适应体…

PowerTCP Sockets for .NET 6.1.5 Crack

PowerTCP Sockets for .NET PowerTCP Sockets for .NET 包含易于使用的 TCP 和 UDP 组件&#xff0c;可帮助您创建 Internet 客户端应用程序&#xff0c;只需几行代码和方便的事件。Ping 组件使用 ICMP、UDP 和 TCP 启用服务器验证&#xff0c;而跟踪组件执行异步跟踪路由以实…

三、数据链路层

&#xff08;一&#xff09;纠错与检错1、奇偶校验码&#xff08;再研究下&#xff0c;原理知道&#xff0c;具体过程无法重现&#xff09;分为奇校验和偶校验&#xff0c;奇偶校验位在首部或尾部&#xff0c;奇偶校验满信息位奇偶校验位&#xff08;1&#xff09;原理&#xf…

多线程 (七) 阻塞队列的使用及其实现

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

科大奥瑞物理实验——交流电桥

实验名称&#xff1a;交流电桥 1. 实验目的&#xff1a; 掌握电桥平衡原理、平衡条件&#xff1b;理解交流电桥构造&#xff0c;熟悉交流电桥平衡方法&#xff1b;分析平衡过程中各桥臂调节顺序&#xff0c;判断最佳平衡点&#xff1b;理解复阻抗概念&#xff0c;电桥平衡时复…

虚拟机centos7配置Hadoop单节点伪分布配置教程

系列文章目录 centos7配置静态网络常见问题归纳_张小鱼༒的博客-CSDN博客 centos7克隆虚拟机完成后的的一些配置介绍_张小鱼༒的博客-CSDN博客 文章目录 目录 系列文章目录 文章目录 前言 一、前期准备 二、Hadoop介绍 2.1、Apache Hadoop 2.2、Cloudera Hadoop 2.3…

基于Vision Transformer的图像去雾算法研究与实现(附源码)

基于Vision Transformer的图像去雾算法研究与实现 0. 服务器性能简单监控 \LOG_USE_CPU_MEMORY\文件夹下的use_memory.py文件可以实时输出CPU使用率以及内存使用率&#xff0c;配合nvidia-smi监控GPU使用率 可以了解服务器性能是否足够&#xff1b;运行时在哪一步使用率突然…

第一个vue-cli项目

第一个vue-cli项目 12.1、什么是vue-cli vue-cli官方提供的一个脚手架&#xff0c;用于快速生成一个vue的项目模板&#xff1b;   预先定义好的目录结构及基础代码&#xff0c;就好比咱们在创建Maven项目时可以选择创建一个骨架项目&#xff0c;这个估计项目就是脚手架&…

编写一个函数,输入一个日期,计算其距年底的时间

--编写一个函数&#xff0c;输入一个日期&#xff0c;计算其距年底的时间 create or replace function f_end(i_date varchar2) return number is/*声明四个变量&#xff0c;v_end:存放输入的日期的年底日期 v_date:存放经过转化为日期型的输入字符串 v_minus:存放两个日期之差…

Springboot怎么实现WebSocket通信(二)

前言上一篇文章分享了单机模式下&#xff0c;websocket的基本使用方法&#xff0c;但在实际的业务中&#xff0c;通常是不会这样使用的&#xff0c;大部项目都是分布式部署的&#xff0c;一个工程布署了多个服务节点&#xff0c;前端并不直接请求具体服务节点&#xff0c;而是先…

xijs更新指南(v1.2.1)

xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用函数逻辑问题, 帮助开发者更高效的开展业务开发.接下来就和大家一起分享一下v1.2.1 版本的更新内容以及后续的更新方向.1. 添加算法模块分类该模块主要由 WangLei802 贡献, 添加内容如下:添加冒泡排序算法及其…

什么是工程项目管理工作?其特点是什么?

什么是工程项目管理工作&#xff1f;其特点是什么&#xff1f; 工程项目管理是为了实现工程项目的有效、高效和可持续管理而进行的一系列活动。 工程项目的管理就像是驾驭一艘巨大的船只&#xff0c;需要一位经验丰富的船长来领导整个团队。 通过工程项目管理&#xff0c;项…

fiddler(抓包)的用法和HTTP 协议的基本格式

目录 fiddler(抓包)用法&#xff1a; HTTP 协议的基本格式 HTTP请求&#xff1a; 首行 认识HTTP方法 GET和POST的典型区别&#xff1a; 认识请求“报头”&#xff08;header&#xff09; HTTP 响应 HTTP状态码&#xff1a; 状态码的分类&#xff1a; 认识响应 …

python语法基础

&#x1f41f;在本次博客主要想大家介绍一些简单的python语法的注意事项&#xff0c;从代码缩进到注释规则&#xff0c;从标准输入到标准输出&#xff0c;以及位运算符等方面了解python的基础使用方法。那么我们接下来直接开始步入正题&#xff0c;开始我们的python语法的讲解吧…

【SpringCloud】SpringCloud Nacos详解(集群配置)

目录前言一.Nacos集群逻辑图二.Nacos集群搭建1.搭建数据库&#xff0c;初始化数据库表结构2.下载Nacos3.配置Nacos3.启动Nacos4.配置启动nginx5.测试是否成功6.设置服务的nacos地址7.新增一个配置&#xff0c;查看数据看是否进行持久化了前言 在我前面两篇讲的都是单个nacos&a…
最新文章