找回密码
 新注册用户
搜索
查看: 5301|回复: 5

用一个有理数表示三个有理数

[复制链接]
发表于 2005-4-3 16:51:33 | 显示全部楼层 |阅读模式
如何将三个有理数变成一个有理数,并且可以从这个有理数还原成原来的那三个有理数。

我已经找到解决方案了,现在来考考大家,看看还有谁能解决。:)
回复

使用道具 举报

发表于 2005-4-6 19:21:38 | 显示全部楼层
设那三个有理数是 x=p1/q1, y=p2/q2, z=p3/q3. pi,qi中最大的有m位数.
所求有理数=10^(6m)+p1*10^(5m)+q1*10^(4m)+p2*10^(3m)+q2*10^(2m)+p3*10^m+q3
因为10^m>pi或qi, 且间隔是均匀的, 应该可以还原.

法2:
设那三个有理数是 x=p1/q1, y=p2/q2, z=p3/q3. pi中最大的有m位数, qi中最大的有n位数.
所求有理数=(10^(3m)+p1*10^(2m)+p2*10^m+p3)/(10^(3n)+q1*10^(2n)+q2*10^n+q3)
...
回复

使用道具 举报

 楼主| 发表于 2005-4-8 23:40:51 | 显示全部楼层
要还原时谁能告诉你m或n是多少。你知道的只有一个有理数,并不知道m或n呀。
否则就不是用一个有理数表示三个有理数了。
回复

使用道具 举报

发表于 2005-4-9 18:47:55 | 显示全部楼层
所求有理数的分子分母的长度总是可以知的吧?
长度减1除以3就得到m或n.
如(十进制)  x=1234/5678,  y=9012/3456,  z=7890/1234
法一: Rational=1 1234 5678 9012 3456 7890 1234
还原: 总长 25位, m=(25-1)/6=4
        按顺序拆 p1=1234, q1=5678, p2=9012, q2=3456, p3=7890, q3=1234
法二: Rational=1 1234 9012 7890 / 1 5678 3456 1234
还原: 同理可得(设P/Q为一个数).

或者......  这样更符合题意:
把pi,qi用'0'补成相同长度, 拆分后按顺序拼成一个数(在首位添"1") 如
x=13/1543  =0013/1543
y=343/2452=0343/2452
z=1334/3    =1334/0003
拼的顺序是 p1的某位;q1的对应位;p2的对应位;q2的对应位;p3的对应位;q3的对应位...
"某位"是由高到低, 对应的意思是同为 ...千位或百位等等.
Rational=1 010210 053430 144530 333243

还原时不必在意共有几位, 去首"1"后按顺序像发牌似的组成原来的6个数:
p1="", q1="", p2="", q2="",  p3="",  q3=""
Rational 010210 053430 144530 333243
发第一轮:
p1="0", q1="1", p2="0", q2="2",  p3="1",  q3="0"
Rational              053430 144530 333243
发第二轮(即 pi=pi*10+Rational[j]):
p1="00", q1="15", p2="03", q2="24",  p3="13",  q3="00"
Rational                           144530 333243
发第三轮:
p1="001", q1="154", p2="034", q2="245",  p3="133",  q3="000"
Rational                                         333243
....最终得到
x=0013/1543=13/1543  
y=0343/2452=343/2452
z=1334/0003=1334/3

[ Last edited by count on 2005-4-9 at 19:27 ]
回复

使用道具 举报

 楼主| 发表于 2005-4-9 23:23:28 | 显示全部楼层
这样可行。
回复

使用道具 举报

发表于 2005-4-14 13:37:22 | 显示全部楼层

没有看懂楼主的意思

...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-5-4 07:55

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表