找回密码
 欢迎注册
查看: 23945|回复: 11

[原创] 寻找不同的数

[复制链接]
发表于 2012-12-10 16:39:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
看你们闲的无事出个题目给你们考虑:

        设有一整数集{0,1,2...,255},
        先人工在其中选出了两个数 a=71,b=201
        再人工选一个不会等于a和b的数x,

问题:

        现在用程序再选一个不会等于a,b,x的数y,如前所述a,b ,x值是确定的。
        求最高效的选一个y的办法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-12-12 09:15:58 | 显示全部楼层
设数组A[254],分别1,2,......,254,255 这254个数,其中不含 71  和 201。
1. 从这254个单元中任取一个数 x;
2.从这254个单元中再任取一个数;
3.将取出来的数与x比较;
4.比较结果相同则再从2.逐步执行,结果不相同则结束;
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-12-12 10:49:15 | 显示全部楼层
这种算法显的很臃肿,
好点的算法如:排序 a、b、x,找出最大最小值。如a是最大值并且a<255,则令y=a+1即符合要求。
我可以给个更高效的思路但目前我没实现:即找到四者一个关系式比如: 令y=a+b+x   , 或许y符合要求,
但事实证明这个关系式不行,但我想存在这样符合要求的等式,这是我出此题的目的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-12-12 14:12:21 | 显示全部楼层
我燥动的脑筋又想到了或许是回忆起另一种看似有点名堂的办法,就是随机产生一个数y,拿y比较a、b、x
若等则继续随机得到y再比较,若都不等则得到结果,但仔细想了下产生随机数内部也是要公式的并不一定最好。
看来查找关系式的算法应该仍是目前最好的想法。如果是这样前面对这个问题的罗嗦描述可以如下简洁描述:

在数域{0,1,2...,255}中,请找一个函数y=f(a,b,x),使得y 不等于任何参数a、b、x  。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-12-12 15:37:31 | 显示全部楼层
本帖最后由 hujunhua 于 2012-12-12 16:37 编辑

y=85a+51b+120x+1(mod255)
如果所得y=0(mod255), 就随便取为0或者255
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-12-12 16:55:02 | 显示全部楼层
还可以更广一点:
y=85a+51b+120x+r(mod255),
r任取于255的缩余系,即Gcd(255,r)=1
如果所得y=0(mod255), 就随便取为0或者255
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-12-12 16:58:10 | 显示全部楼层
看来你有点数学底子,搬上了一些高级的东西。
不过我还在验算,看来我也要用些理论的东西了,不能光验算
我希望有人给出上式的证明,免得我花时间检验,下班了只能等明天
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-12-12 21:11:35 | 显示全部楼层
9# mathtime
看来你有点数学底子,搬上了一些高级的东西。

额,这个这个, ,
黑色的幽了一默

===============
不知道这个是否可行
y= a+b+x+GCD(a,b,x)  (mod 256)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-12-13 09:55:06 | 显示全部楼层
这个公式用手工验算已无法完成,因为它们相互关联了,我要复习下数论来重新认识下这个问题。虽然我想到了似乎是更好的算法,这个在有必要时再提出,因为我觉得这里用函数的方法适用性更强实用价值更大,值得探讨下去(所以暂时不想引入思路到其他分支)。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-12-18 17:55:41 | 显示全部楼层
本帖最后由 hujunhua 于 2012-12-20 08:51 编辑
不过我还在验算,看来我也要用些理论的东西了,不能光验算我希望有人给出上式的证明,免得我花时间检验,下班了只能等明天mathtime 发表于 2012-12-12 16:58

排列数P(256,3)=16581120, 要用手工直接验算是行不通的,除非你运气好很快找到反例。但不幸的是,5#和6#的表达式是没有反例的(我试着用Mathematica9验算5#,费时107秒)。
5#的表达式是“中国剩余定理”解出来的,构造起来不难,反过来证明更简单。
记n≡85a+51b+120x+1(mod 255), 注意255=3·5·17,85=5·17≡1(mod 3),51=3·17≡1(mod 5),120=3·5·8≡1(mod 17),易得
n≡a+1(mod 3)≡b+1(mod 5)≡x+1(mod 17), 所以n与a, b, x皆不相等。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-6 18:44 , Processed in 0.054912 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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