2019蓝桥杯大赛省赛Java大学B组 数的分解

简介: 2019蓝桥杯大赛省赛Java大学B组 数的分解

题目

答案

package test;
 
 
public class Main {
    public static void main(String[] args) {
      int cnt=0;
        for(int i1=1;i1<2019;i1++) {
          for(int i2=i1+1;i2<2019;i2++) {
            int i3=2019-i1-i2;
            if(i3<=i2)continue;
            else {
              boolean judge=true;
              int ans1=i1;
              int ans2=i2;
              int ans3=i3;
              while(ans1>0) {
                int a=ans1%10;
                if(a==2||a==4) {
                  judge=false;
                  break;
                }
                ans1/=10;
              }
              while(ans2>0) {
                int a=ans2%10;
                if(a==2||a==4) {
                  judge=false;
                  break;
                }
                ans2/=10;
              }
              while(ans3>0) {
                int a=ans3%10;
                if(a==2||a==4) {
                  judge=false;
                  break;
                }
                ans3/=10;
              }
              if(judge) {
                cnt++;
                  System.out.println(i1+" "+i2+" "+i3); 
              }
            }
          }
        }
        System.out.print(cnt);
    }
}

这段代码的功能是找出所有满足以下条件的三个整数组合 (i1, i2, i3)

  1. i1 + i2 + i3 = 2019
  2. i1 < i2 < i3
  3. i1, i2, i3 中不包含数字 24

让我们逐步分析代码的运行过程:

代码分析

  1. 变量定义
  • cnt:用于计数符合条件的组合数目,初始为 0
  1. 嵌套循环
  • 外层循环 for(int i1=1; i1<2019; i1++):遍历可能的第一个数 i1,范围是 12018
  • 内层循环 for(int i2=i1+1; i2<2019; i2++):对于固定的 i1,遍历可能的第二个数 i2,范围是 i1+12018
  • 计算第三个数 i3:根据 i1, i2 计算第三个数 i3 = 2019 - i1 - i2
  1. 条件判断
  • if (i3 <= i2) continue;:如果 i3 小于等于 i2,则跳过当前循环,因为要求 i1 < i2 < i3
  • boolean judge = true;:设置一个布尔变量 judge,用于判断 i1, i2, i3 是否满足不包含数字 24
  1. 检查每个数的每位数字
  • 通过 while (ans1 > 0)while (ans2 > 0)while (ans3 > 0) 循环,分别提取 i1, i2, i3 的每一位数字,并检查是否包含数字 24
  • 如果发现包含 24,则将 judge 设置为 false,并且跳出当前循环。
  1. 判断结果
  • 如果 judgetrue,表示 i1, i2, i3 符合条件,增加 cnt 的计数,并输出这个组合。
  • 最后输出符合条件的组合数目 cnt

总结

这段代码的目的是利用嵌套循环和条件判断,找出满足特定条件的三个整数组合,并统计符合条件的组合数目。条件包括三个数之和为 2019,且这三个数均不包含数字 24

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

目录
相关文章
|
2月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
58 5
|
4月前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
83 1
|
6月前
|
存储 算法 测试技术
第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
48 1
|
6月前
|
Java
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
58 4
|
6月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
58 2
|
6月前
|
Java
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
40 1
|
6月前
|
存储 前端开发 算法
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
40 0
|
4天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
6天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
6天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。