一个最难的数学问题,虽然看是简单,实际上很难,有兴趣挑战你的大脑嘛?来看看吧!

Coolfei 2002-05-10 03:10:08
X*X*X*X*X=120
求每一个X是多少? 你能想到办法嘛?
如果你知道怎么办,麻烦请你写上你的代码,以及思路,谢谢!

如果你认为上面代码没挑战意义,那么如果X=N的时候你该怎么办啊?
X*X*X*X*X*X*X*X*X*X*X....=120000000
如果你知道怎么办,麻烦请你写上你的代码,以及思路,谢谢!


...全文
128 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wwl_f117 2002-05-11
z_sky说的没错
是很糊涂
回复
-空军- 2002-05-11
gz
回复
mathe 2002-05-11
主要是需要先将N进行因子分解。
然后设
N=p1^a1 * p2^a2 * ... *pt^at

那么现在设有
Xs=p1^bs1 * p2^bs2*...*pt^bst

N=X1*X2*..*Xs

b11+b12+..+b1t=a1
b21+b22+..+b2t=a2
...
bs1+bs2+..+bst=as
求上面方程非负整数解的数目。
由于上面各条方程互不影响,最总解的数目是上面各条方程解的数目的乘积。


而对于上面当条方程的解的数目,本版过去已经讨论过无数次了,这里就不继续介绍了。
不过一个相当头疼的问题是解的重复计算的问题。我们需要将所有的解分类来处理这个问题。

例子:
N=120=2^3*3*5
取s=3(充分大就可以了,不够的自动用X*X*..*X*1*..*1补充)
方程
x1+x2+x3=3的解有
(3,0,0),(0,3,0),(0,0,3) (3组)
(2,1,0),....,(0,1,2) (6组)
(1,1,1) (1组)
共10组解

y1+y2+y3=1

z1+z2+z3=1
都是3组解。 (1,0,0), (0,1,0), (0,0,1)
所以如果考虑考虑数据的顺序,共有10*3*3=90组解。
其中
X1,X2,X3三个数都相同的情况为0组。
X1,X2,X3三个数中两个相同的情况:
x取(3,0,0),(0,3,0),(0,0,3) ,y,z取(1,0,0), (0,1,0), (0,0,1)
而且相同的数要正好对应上。共3组,但这三组实际上一回事。
x取(1,1,1), y,z取(1,0,0),(0,1,0),(0,0,1)
y,z相同数目的要正好对应上,所以也是3组,但是也要算成一组。
所以剩于还有90-3-3=84种三个数都不相同。这些每一个都被重复计算了3!=6次,所以最终结果为
84/6+3/3+3/3=16种不同乘积方案。

上面的算法的主要难点可能在于重复计数的分析,我也没有分析清楚,希望能够抛砖引玉
回复
z_sky 2002-05-10
太土了,我看你还是把自己的问题整理清楚再说,条件规定不清楚,要求不清楚,补充说明更让人迷糊。所谓不说还好,越说越糊涂。什么叫“不好意思,因该是1 To 120”

看看你要的是不是这个题目:
怎样将一个自然数d分解为n个互不相同的自然数的乘积?

当然太笼统了,不是每个(d,n)都有解,有解的也不一定唯一
目前你要求的不过是(120,5),对吧?


回复
123123123 2002-05-10
用低归,我认为可以
回复
virginsoldier 2002-05-10
噢!对了,我还有一个计算N个X的和=M的程序你想要吗?:)
回复
virginsoldier 2002-05-10
我这儿有一个能列举出所有 X*X*X*X=24的解集的程序,你想要吗?和你的问题的做法是完全一样的。:)
回复
Coolfei 2002-05-10
不好意思,因该是1 To 120
回复
Coolfei 2002-05-10
有解的!有人用方法解出来的,但是没说是什么思路!

1*2*3*4*5=120

这才是正确的!

回复
crazy_lazy_pig 2002-05-10
此题按各数不相同的要求无解
因为:120分解质因数得

120=2*2*2*3*5

刚好五个数相乘,在 2——120 之间的整数范围内没法再分了
回复
Coolfei 2002-05-10
如果大家已经解除来了,那么请你依次填上X里面的数!看看是否是正确答案!
X*X*X*X*X=120

依次是多少了?
回复
Coolfei 2002-05-10
X不能相同! 也不能是小数! 必须是2-120之间的数,这么说大家能够清楚嘛?
回复
one_add_one 2002-05-10
这个问题好象不配这个标题:)


如果X可以相同而且可以是小数 z_sky() 的方法足够了。


如果X必须是整数,就先把120或12000000分解因式。

然后再把各因子分配到每个X上去,就可以了。
回复
Coolfei 2002-05-10
呵呵! 不行不行!Power幕,是不行的每一个X的值不能一样!
回复
AttaBoy 2002-05-10
穷举列出所有的解
设x个数为n,假设x*x*x...,这个序列没有顺序的,即1*120与120*1是等价的,为同一解则
1.前n-1个x均为1,则第n个x为120..
2.前n-2个x均为1,第n-1个x为2,则第n个x为120../2
3.前n-3个x均为1,第n-2个x为2,第n-1个x为2,则第n个x为120../2*2

......

(1->2->3->...)<第n(n-1...)个x值.
依次向前递进,注意序列是没有顺序的

回复
lshadow 2002-05-10
呵呵,查点搞错了,我还以为是要整数呢
回复
lshadow 2002-05-10
呵呵,首先想到的是穷举,不过好笨,再想想
回复
z_sky 2002-05-10
什么意思嘛?这么神秘的。

你是不是要这个:

x = pow(120, 1/5);

x = pow(12000000, 1/n);

回复
freelybird 2002-05-10
有实际应用吗?
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2002-05-10 03:10
社区公告
暂无公告