当前位置: 首页 > news >正文

蓝桥杯-算法基础-For循环

使用语言:Java

for循环与字符串

2019.Java C组第一题

小明对数位中含有2,0,1,9的数字很感兴趣,在1到40中这样的数有28个,他们的和为574,从1到2019,所有这样的数的和是多少?

思路分析1:获取1-2019每个数字的千位(不为0)百位,十位,个位,将每一个数字和2,0,1,9这四个数字进行比较,若存在,累加到变量中

思路分析2:将数字转化为字符串,获取每一位数字

public class demo1{
    public static void main(String[] args){
        //定义变量用于统计结果
        int count=0;
        //在范围内进行循环
        for(int i=1;i<=2019;i++){
            //将数字转化为字符串
            String j=i+"";
            //将字符串转化为字符数组,toCharArray
            char[] cs=j.toCharArray();
            //遍历数组与数字进行对比
            for(int k=0;k<cs.length;k++){
                if(cs[k]=='2'||cs[k]=='0'||cs[k]=='1'||cs[k]=='9'){
                    count+=i;
                    break;
                }
            }
        }
        System.out.println(count);
    }
}

注意事项:1.count结果的打印要在循环外层,即代码运行完成的地方

2.进行count累加后记得加上break-->否则一个数字可能会累加多次,如2019,四个数字都会符合, 如果不加break,则会累加4次,导致运行结果错误

3.字符和字符串计算长度的比较:char->length && String->length()

2015.Java C组第二题

一些数字的立方的末尾正好是该数字本身,比如:1,4,5,6,9,24,25...请你计算一下,在10^4以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个

思路分析:已知循环次数,用for循环。可以将数字和数字的立方转成字符串--->str.endWith(str2):判断字符串str是否以字符串str2结尾

public class demo2{
    public static void main(String[] args){
        int count=0;
        for(int i=1;i<=10000;i++){
            //计算该数字的立方值
            //使用long类型而不是int类型
            //int类型的最大值为2^31-1,使用long类型可避免整数溢出
            long cube=(long)i*i*i;
            //将数字和数字的立方都转变为字符串
            String numStr=Integer.toString(i);
            String cubeStr=Long.toString(cube);
            if(cubeStr.endsWith(numStr)){
               count++; 
            }
        }
        System.out.println(count);//36
    }
}

2019.JavaC组第二题

小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,知道全部切成正方形为止。例如:对于一块两边分别为5和3的材料(记为5*3),小明会依次切出3*3, 2*2, 1*1 ,1*1共4个正方形。现有一块矩形的材料为2019*324,问小明最终会切出多少个正方形?

思路分析:每次切割最大的正方形后,剩余部分仍为矩形,重复此过程直到全部变为正方形,切割次数=每次切割的正方形数量的总和--->使用辗转相除法

public class demo3{
     public static int countSquares(int a, int b) {
         //统计结果
         int count=0;
         //当较小边不为零时继续切割
         while(b!=0){
             //确保a是最大边
             if(a<b){
                 int temp=a;
                 a=b;
                 b=temp;
             }
             //当前切割的正方形数量
             int squares=a/b;
             //累加到总数
             count+=squares;
             //剩余边长
             int reminder=a%b;
             //更新边长,继续处理剩余部分
             a=b;
             b=reminder;
         }
         return count;
     }


    
    public static void main(String[] args){
       //函数调用
        System.out.println(countSquares(2019,324));//21
    }
}

http://www.dtcms.com/a/108446.html

相关文章:

  • [CISSP] [5] 保护资产安全
  • Mybatis 如何自定义缓存?
  • UML 关系探秘:理论与实践双维度剖析
  • Cesium for Unreal 源码编译
  • php开发rest api,哪个框架最好
  • C# 窗体应用(.FET Framework) 与 visionpro 连接
  • Unity Final IK:下一代角色动画与物理交互的技术解析
  • 合合信息TextIn大模型加速器2.0:图表解析能力的横向测评
  • Ansible(1)—— Ansible 概述
  • Spring常见题
  • Go语言学习(15)结构体标签与反射机制
  • ES6(8) Fetch API 详解
  • C#:base 关键字
  • 铂卡梭 智能羽翼 AI 系统:交易科技的未来引擎
  • php8 match表达式使用教程
  • 软件重构与项目进度的矛盾如何解决
  • Node.js全局生效的中间件
  • pytorch中Dropout
  • Vue + Scss项目中实现自定义颜色主题的动态切换
  • 深入解析Translog机制:Elasticsearch的数据守护者
  • MySQL 服务基础介绍
  • 第二十章:Python-Matplotlib库实现函数可视化
  • 日本IT|浅谈intramart现状及分析
  • 玛卡巴卡的k8s知识点问答题(六)
  • QT软件设计可考虑回答
  • GFS论文阅读笔记
  • 《二叉树:二叉树的顺序结构->堆》
  • Linux基础命令:开启系统操作之旅
  • 将一个新的机器人模型导入最新版isaacLab进行训练(以unitree H1_2为例)
  • 2025最新WordPress网站被挂码的原因与解决方案