Java实现蓝桥杯(年龄问题,分数,乘积尾零)

题1:年龄问题:

年龄问题 JAVA大学C组
s夫人一向很神秘。这会儿有人问起她的年龄,她想了想说:

“20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍”。

你能算出s夫人现在的年龄吗?

注意,需要提交的是一个整数,不要填写任何多余的内容。

问题分析:

1. 20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍

20年前与现在

代码如下:

public static void main(String[] args) {
		//男人的年龄
		for (int man = 0; man < 100; man++) {
			//女人的年龄
			for (int woman = 0; woman < 100; woman++) {
				//满足题目第一个要求,二十年前,男人的年龄是女人的2倍
				if ((man - 20) == (woman - 20) * 2) {
					//满足题目第二个要求,现在,男人的年龄是女人的1.5倍
					if (man == woman * 1.5) {
						System.out.println(woman);
					}
				}
			}
		}
	}
}

最后输出:

 题2:分数

1/1 + 1/2 + 1/4 + 1/8 + 1/16 + … 每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。
类似:3

### 蓝桥杯 Java 实现乘积问题 对于蓝桥杯中的乘积问题,核心在于计算阶乘结果中结有多少个连续的。这类题目通常涉及大数运算以及高效的算法设计。 #### 解题思路 要解决这个问题的关键是理解一个事实:在十进制表示下,只有当因子中有2和5相乘时才会产生一个新的0。由于任何正整数分解质因数后所含有的2的数量总是大于等于5的数量,因此只需要统计n!中含有多少个5作为其因子即可得到最终的结果[^1]。 具体来说: - 对于任意给定的一个自然数`n`,求解`n!`(即从1到`n`所有整数连乘)末有几个; - 计算方法是从1至该自然数之间所有的数字里含有多少个5这个素因子; - 特别的,像25=5*5这样的情况会贡献两个5;同理还有更大的幂次方形式也需要考虑进去。 基于上述理论基础,在编写具体的Java程序之前可以先定义好解决问题的核心逻辑框架如下所示: ```java public class FactorialTrailingZeros { public static int countFactorialTrailingZeros(int num){ if (num < 0) return -1; int result = 0; while(num >= 5){ num /= 5; result += num; } return result; } public static void main(String[] args) { System.out.println(countFactorialTrailingZeros(10)); } } ``` 此段代码实现了对输入参数`num`代表的阶乘值中数量的有效计数功能。通过不断除以5并累加商直到被除数小于5为止,从而得出总的5因子数目,也就是的数量。 #### 关联知识点补充说明 为了更好地理解和掌握此类问题及其解决方案,建议进一步学习以下概念和技术要点: - **数学基础知识**:了解基本组合数学原理,特别是有关排列组合的知识点。 - **编程技能提升**:熟悉如何利用循环结构处理重复性的操作流程,并能够灵活运用条件判断语句完成特定任务分支的选择执行过程。 - **性能优化意识培养**:认识到时间复杂度的重要性,学会评估不同算法之间的效率差异,进而选取最优策略应用于实际场景之中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值