生日吹蜡烛问题java

2023-10-20 12:50
文章标签 java 问题 生日 蜡烛

本文主要是介绍生日吹蜡烛问题java,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

张三从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
求张三多少岁开始过生日party

先用数学思维来算一算
设张三x岁开始过生日
第一年x
第二年x+1
第三年x+2
第n年x+(n-1)
求和即为吹的蜡烛总数
2nx + n*n - n = 472;
二元方程可能不是一组解,限制条件有年龄为整数,年龄不能无限大
下面是三种实现方法:

public class Task113 {public static void main(String[] args) {cal();cal1();cal2();}//枚举方法,不停的遍历public static void cal() {//假设人的寿命不超过100岁//我们设第i年开始过生日,过了j年后吹满236蜡烛,那i+j<=100for (int i = 1; i < 100; i++) { // 从1岁开始过生日for (int j = 0; j < 100 - i; j++) { // 过了j年if ((2 * j * i + j * (j - 1)) == 472) {System.out.println("第" + i + "岁开始过生日日,过了" + j + "年");}}}}//利用限制条件 推倒出一个变量 用单循环解决public static void cal1() {for (int n = 1; n < 100; n++) {//满足条件时,年龄肯定为正整数,以此作为限制条件double temp = (((472 - n * n + n) * 1.0 )/ (2 * n));if(temp % 1 == 0 && temp > 1 && temp < 100) {System.out.println("第" + (int)temp + "岁开始过生日");}}}//Afei提供public static void cal2() {int r = 0; //蜡烛数量int s = 1; //年龄,初始值为1int i = 0; //辅助变量for(;i<100;i++) {r += i;if(r > 236) { //当蜡烛数量超过236时,年龄+1,重新开始循环s++; i = s;r = s;}if(r == 236) { //当蜡烛数量等于236时,输出此时年龄System.out.println("第" + s + "岁开始过生日日");break;}}}
}

为了节省资源,可以在上面的循环中加入限制条件,即吹灭蜡烛总数超过题目要求时候,跳出内层循环,不需要内层一定循环完毕。

补一发答案来自知乎

还是先找公式我上面的公式过度化简了
假设从x岁开始,直到x+i岁,一共吹熄236根蜡烛。根据求和公式有:
(x + x + i)* (i + 1) ➗ 2 =236
(2x + i)*(i +1) = 472
x和i 肯定都是整数,所以 472%(i + 1) =0
同理(472 / (i + 1) - i) %2=0

public class Main {public static void main(String[] args) {for (int i = 0; i < 100; i++) {if (472 % (i + 1) == 0) {int t = 472 / (i + 1);if ((t - i) % 2 == 0) {int x = (t - i) / 2;if (x > 0 && x <= 100)System.out.println(x);}}}}
}

这篇关于生日吹蜡烛问题java的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247211

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows