简单单位分数—题解

[题解]埃及分数 C++ 埃及分数例题DescriptionInputOutputSample InputSample Output思路代码 例题 Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数... 阅读详情
形如:1/a 的分数称为单位分数。

可以把1分解为若干个互不相同的单位分数之和。
例如:
1 = 1/2 + 1/3 + 1/9 + 1/18
1 = 1/2 + 1/3 + 1/10 + 1/15
1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231
等等,类似这样的分解无穷无尽。
我们增加一个约束条件:最大的分母必须不超过30

请你求出分解为n项时的所有不同分解法。


数据格式要求:
输入一个整数n,表示要分解为n项(n<12)
输出分解后的单位分数项,中间用一个空格分开。
每种分解法占用一行,行间的顺序按照分母从小到大排序。

例如,
输入:
4
程序应该输出:
1/2 1/3 1/8 1/24
1/2 1/3 1/9 1/18
1/2 1/3 1/10 1/15
1/2 1/4 1/5 1/20
1/2 1/4 1/6 1/12


再例如,
输入:
5
程序应该输出:
1/2 1/3 1/12 1/21 1/28
1/2 1/4 1/6 1/21 1/28
1/2 1/4 1/7 1/14 1/28
1/2 1/4 1/8 1/12 1/24
1/2 1/4 1/9 1/12 1/18
1/2 1/4 1/10 1/12 1/15
1/2 1/5 1/6 1/12 1/20
1/3 1/4 1/5 1/6 1/20
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 2000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。


解题思路:  也是属于搜索一类的题目,练习下 dfs 很不错!


public class Asist
{
	public static int n = 0;    // 分解n项
	
    public static void main(String[] args)
	{
        Scanner sc = new Scanner(System.in);
         n = sc.nextInt();
        int arr[] = new int[n];  // 临时暂存
        
        dfs(2, n, arr);
	}

	private static void dfs(int num, int count, int[] arr)
	{
		if (count <= 0)  check(arr);
		else
		{
			for (int i = num; i < 30; i++)
			{
				arr[n-count] = i;
				dfs(i+1, count-1, arr);
			}
		}
	}

	// 判断是否满足条件
	private static void check(int[] arr)
	{
		int sum = 1;
		for (int i = 0; i < arr.length; i++)
		{
		    sum *= arr[i];	
		}
		int sun = 0;
		for (int i = 0; i < arr.length; i++)
		{
			sun += sum/arr[i];
		}
		
		if (sum == sun)
		{
            for (int i = 0; i < arr.length; i++)
            {
            	System.out.print("1/"+arr[i]+" ");
            }
            System.out.println();
		}
	}
} 


题解-埃及分数 埃及分数方法+题解 Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如: 19/45=1/3 + 1/12 + 1/180 19/45=... 阅读详情

相关推荐

【基础练习】【IDA*】codevs1288 埃及分数题解

题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越 好。 如: 19/45=1/3 + 1/12 + 1/180 19/45=1

西家家 2145

蓝桥杯 2015校内选拔试题 第六题:1/a 的分数称为单位分数

形如:1/a 的分数称为单位分数。 可以把1分解为若干个互不相同的单位分数之和。 例如: 1 = 1/2 + 1/3 + 1/9 + 1/18 1 = 1/2 + 1/3 + 1/10 + 1/15 1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231 等等,类似这样的分解无穷无尽。 我们增加一个约

你不知道你不知道的事 4103

埃及分数题解[迭代加深搜索]

题目 链接 https://vijos.org/p/1308 http://codevs.cn/problem/1288/ - 题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先

t14t41t的专栏 1664

蓝桥杯第五届省赛JAVA真题----单位分数

形如:1/a 的分数称为单位分数。可以把1分解为若干个互不相同的单位分数之和。例如:1 = 1/2 + 1/3 + 1/9 + 1/181 = 1/2 + 1/3 + 1/10 + 1/151 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231等等,类似这样的分解无穷无尽。我们增加一个约束条件:最大的分母必须不超过30请你求出分解...

一串代码的博客 783

埃及分数 Egyptian Fractions (HARD version)

某谷的题面 蒟蒻认为此题难度挺大,(dalao除外 )不过要用搜索大家应该还是看得出来的。(dfs) 任何一个真分数a/b(且a小于b)一定能表示成埃及分数之和,因此一定能搜索到解。 但是不剪枝的话是会T掉的哦~~ 按a/b可拆分成的单位分数的个数进行循环搜索。 1)先将a/b分子分母消去因子,化为最简形式。 2)如果a=1则直接输出b。 3)否则从拆分成2个项开始尝试。如果2个单位分数无法拼凑成a/b,则试3个……依此类推。那么我们搜索得到的第一个解一定会满足加数个数最少这个要求。 4)如果当加数个数等于

guo_dong_yu的博客 680

2014蓝桥杯选拔赛《单位分数》答案

2014蓝桥杯选拔赛 单位分数的答案 满足运行时间<=2000ms的条件!

第五届蓝桥杯Java语言_单位分数

形如:1/a 的分数称为单位分数。 可以把1分解为若干个互不相同的单位分数之和。 例如: 1 = 1/2 + 1/3 + 1/9 + 1/18 1 = 1/2 + 1/3 + 1/10 + 1/15 1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231 等等,类似这样的分解无穷无尽。 我们增加一个约束条件:

无 1984

写出GD32L233/235在读写flash的区别(用于OTA功能)

在单片机里面表示 大概是 address += sizeof(uint32_t) address += sizeof(uint64_t)1.说到OTA功能,实际上 往flash 指定区域写 数据, 拷贝数据,然后 跳转, 必要时 注意单片机的偏移量。在写本文时,L233支持单字写入,而L235只有双字写入. 一个写入地址+4 一个写入地址+8。这个是 自己写的擦除一页 数据,当然可以参考 提供的demo去实现,看自己需求。接下来是 读取 双字,也就是在L235上的读取。

teleger的博客 907

把1分解为若干个互不相同的单位分数之和

深度优先搜索,自己尝试写的代码输出总是有点问题,网上找到大神写的代码,研读了2个小时,真的十分精妙,在此加上注释分享 问题重述: 形如:1/a 的分数称为单位分数。 可以把1分解为若干个互不相同的单位分数之和。 例如: 1 = 1/2 + 1/3 + 1/9 + 1/18 1 = 1/2 + 1/3 + 1/10 + 1/15 1 = 1/3 + 1/5 + 1/7 + 1/9

上善若水 5702

cadence virtuoso 激励信号源

vpulse,vpwl,vsin,vsource信号源介绍

努力学习的IC小白 3万+

手把手教你用ADIsimCLK和GUI搞定HMC7044时钟配置(附避坑指南)

本文详细解析了HMC7044时钟芯片的配置方法,通过ADIsimCLK和HMC7044 Configuration GUI工具,从频率规划到硬件验证全流程实战演示。特别针对PLL模式选择、分频链配置等易错环节,提供量产验证的配置模板和实测数据,帮助工程师快速掌握高性能时钟解决方案。

weixin_30755393的博客 794

埃及分数 题解

题目传送门 题目大意: 太长了懒得打了。。 (相信大家也都看懂了吧qwq) 显然,我们不知道搜索的深度是多少,所以我们需要使用迭代加深搜索。 但是这样还不够,难道我们每次枚举分母的时候真的要枚举到107吗?(那怕不是傻吧。。)于是,我们还需要几个优化。 首先优化分母枚举的下限。 优化1 我们设当前减去若干个单位分数后得到的分数是xy\frac x yyx​,当前枚举的分母为i。 显然,一个优化就是...

a_forever_dream的博客 7364

centos7 清理缓存

一、系统环境 系统版本 CentOS Linux release 7.3.1611 (Core) 内核版本 Linux xx-user 3.10.0-514.el7.x86_64 #1 SMP 背景 服务器分配的账号是普通用户,只能执行sudo命令 二、缓存查看及基本概念 查看内存使用情况 [user01@xx-user ~]$ free -h total used free shared buff/cache availabl

sunzq55的博客 4004

【题解】埃及分数-C++

Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1...

weixin_30765319的博客 406

医药行业新零售项目数据分析报告——基于Excel的分析与可视化

不同平台客户支付金额用数字+百分比展示更直观。各大区支付金额分析较为粗浅,后续可加入不同大区人数、配送费等进行细分分析。图表略微单一,可采用组合图,运用两个及以上维度对数据进行分析。数据来源本项目数据来源于某机构的项目案例,以上分析内容均为本人原创,不涉嫌抄袭。原做项目,新平台首发。

2401_84213513的博客 1495

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3273

python埃及分数_【题解】埃及分数-C++

Description在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。对于一个分数a/b,表示方法有很多种,但是哪种最好呢?首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。如:19/45=1/3 + 1/12 + 1/18019/45=1/3 + 1/15 + 1/45...

weixin_42099942的博客 347

2026年数字IC设计禾赛科技笔试带答案解析

本文介绍了一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含15道单选题(30分)、10道填空题(20分)和5道简答/编程题(50分),总分100分,考试时长120分钟。单选题涉及同步时序电路、Verilog语法、跨时钟域设计、FPGA优化、存储器层次、功耗优化等知识点;填空题考查环形振荡器、工艺参数、时序约束、LUT结构等基础概念。试题重点考察应聘者对数字电路设计核心概念的理解和实际工程应用能力,特别是针对激光雷达芯片设计中的关键技术点进行考核。

Open 123

埃及分数—题解 && 深搜的简单剪枝

一、搜索的剪枝必需遵循三个原则:   1、正确性(不能把正解排除,要不然搜什么呢?)2、准确性(尽可能把不能通向正解的枝条剪去)3、高效性(因为在每个枝条上都要进行一次判断,如果判断的复杂度很高,也会相应地给总复杂度“加料”) 二、剪枝的常用入手点(上面说的都是套话,下面可是干货了)   1、搜索顺序(例如有些题要求不能重复且解中最大值在所有解的最大值中最小的最优解,可以按照从小到大设计...

W15251243789的博客 381

基于情感分析+聚类分析+LDA主题分析对服装产品类的消费者评论分析

本研究旨在通过对服装产品类的消费者评论进行综合分析,为企业提供更全面、更深入的市场洞察和决策支持。同时,本研究的方法和结果也可以为其他领域的消费者评论分析提供借鉴和参考。

m0_64336780的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

题解 埃及分数

目录 问题 C: 埃及分数 题目描述 输入 输出 样例输入 样例输出 题解 本篇题解也发表于zwcblog作者是同一个人 问题 C: 埃及分数 题目描述 在古埃及,人们使用单位分数的和 (形如...

weixin_30776863的博客 375

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

埃及分数 (迭代加深入门)

Description: 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。对于一个分数a/b,表示方法有很多种,但是哪种最好呢?首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如:19/45=1/3 + 1/12 + 1/180 19/45=1/3 + 1/15

Assmel 3685

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

入门OJ 1261【埃及分数】

描述   在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。   如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。  对于一个分数a/b,表示方法有很多种,但是哪种最好呢?  首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。  如:  19/45=1/3 + 1/12 + 1/180  19/45=1/3 +...

weixin_30881367的博客 275

埃及分数

在古埃及,人们使用单位分数的和(形如1a\frac{1}{a}a1​的,aaa是自然数)表示一切有理数。 如:23=12+16\frac{2}{3}=\frac{1}{2} + \frac{1}{6}32​=21​+61​,但不允许23=13+13\frac{2}{3}=\frac{1}{3} + \frac{1}{3}32​=31​+31​,因为加数中有相同的。 对于一个分数ab\frac{a}{b}ba​,表示方法有很多种,但是哪种是最好的呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分

CoderZeng的博客 1168

PAT题解——Basic Level——1085 PAT单位排行

题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805260353126400。 题面 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。 输入格式 输入第一行给出一个正整数 N(≤10​5​​),即考生人数。随后 N 行,每行按下列格式给出一个考生的信息: 准考...

努力中的老周的专栏 7385

分数乘法计算机题,分数乘法练习题

分数乘法练习题分数乘法是乘法运算中一个很重要的点,也是最基础的方式,学习好这部分内容有利于提升数学能力,下面是分数乘法练习题,我们一起来看看吧!分数乘法练习题一、梳理知识1.怎样计算分数乘法2.怎样的两个数互为倒数?怎样求一个数的倒数?3.举例说说你能解决哪些用分数乘法计算的实际问题。二、基础练习1.写出下面各题的数量关系式(1)绿花的朵数是黄花的` 。(2)黄花的朵数比绿花多。(3)一件上衣降价...

weixin_36488589的博客 649
上一篇: 字母移动—题解
下一篇: 数独问题—题解
慕一春
博客等级 码龄12年 19粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值