回 帖 发 新 帖 刷新版面

主题:[讨论]埃及分数

埃及分数
Time Limit:2s Memory Limit:1000k
Total Submit:2159 Accepted:301
下载样例程序(PE)
下载样例程序(ELF)


--------------------------------------------------------------------------------

Problem
在古埃及,人们使用单位分数的和(形如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 + 1/45

19/45=1/3 + 1/18 + 1/30,

19/45=1/4 + 1/6 + 1/180

19/45=1/5 + 1/6 + 1/18.

最好的是最后一种,因为1/18比1/180,1/45,1/30,1/180都大。

给出a,b(0〈a〈b〈1000),编程计算最好的表达方式。

Input
第一行:N 表示有N组测试数据,每组测试数据为一行包含a,b(0〈a〈b〈1000)。

Output
每组测试数据若干个数,自小到大排列,依次是单位分数的分母。

Sample Input
1
19 45

Sample Output
5 6 18

Source
oibh
[em18]我觉得有难度,并且有意思。

回复列表 (共17个回复)

11 楼

怎么bfs,你说说。。。

12 楼

这个题目我在QB论坛见过,
不知道是谁不清不楚的发在QB那去了,
在这里才看到算比较完整的题目,
建议题目中的"好"的意思改一改,怎样才能叫好?
应该写作理想的,或者是最优解,单位分数应该叫做"真分数"(分子为1的分数)
我只会QB,只好瞎说说.

有理数也可以化作分母为10^n的分数,
这是条件,

1.先约分
2.把分子分解一下,分解成分母的一些质因数的和(1也要算上),一个分式分解多个分数
3.约分,

如题所言:  19/45
45=5*3*3*3*1
19=9+10
10不好分,还可以增份变成20/90,再分成5和15就可以得到楼主的结果了.

2,3,5都是比较常用的因子,多乘乘减减该可以了.

13 楼

真分数是分子比分母小的分数吧,
你那样更显得复杂,怎么编程做?
用搜索的方法最担心的就是超时,不知道有多少解,搜得没完没了。。。

14 楼

搜索包括深搜和广搜,我还是不明白用广搜能怎么解?

15 楼

good

16 楼

idbfs

17 楼

to:楼主:
  建议您以后别贴那么长的……很多人没耐心看完。
另:

    急需pascal奥赛书籍(中学版),各位大哥帮帮忙,有的请回我贴,再联系,或写信给我。我寄钱去时出版社已没货~~!~·!唉!!
        邮箱:bad.boy01@126.com
                                   跪谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册