先来个大家看不懂的:
定义:用(U,V)表示S的一个分析 S=U+V P的分解 P=U*V
S对m.n 的每个推测(m=U n=V)为S 的一个分析,而每一个分析将导致S对P的一个推测。
由第一句得出推测:
P的分解不是唯一的==〉P 本身不是素数==>S不可能由两个素数组成。
S不是偶数 S 分析 (奇+偶)
S的任一分析中没有大于50的素数
S=2的分解,此分解是满足D1(S)的唯一分解。
导2: S 若有两个(或以上)形如(2K,素数)K>=2的分解,此S不满足D3(S)。
网上好事之徒的答案,不过是错的:D
我的解法,仅供参考:
定义:
B(x)={a+b: a*b=x, 21},
由①可知:s∈A (②应包含在①中)
由③可知|A∩B(p)|=1
由④可知,只有唯一一个x∈C(s),使得B(x)满足:|A∩B(x)|=1,
即s应满足: |{x:x∈C(s),且|A∩B(x)|=1}|=1
相应算法:
求出A, 结果为:A={11,17,23,27,29,35,37,41,47,53}
遍历s∈A,
遍历N∈C(s)
遍历M ∈B(N)
计算n1=|A∩B(N)|
计算n2=|{x:x∈C(s),且|A∩B(x)|=1}|
如果n2=1,输出s;
结果为:m=4,n=13, s=17=4+13, p=52=4*13。
2001.06.07
附录一:解题的主程序
#i nclude "math.h"
#define ANum 10
enum boolean {false,true};
int A[ANum]={11,17,23,27,29,35,37,41,47,53};
int sum[ANum][2];
int InA(int x); /* 判断x是否在A中 */
main(){
int i,j,k,M,N,n1,n2;
for(i=0;i=2 && i-j=2)
n1=n1+1;
}/*end for(k)*/
if(n1==1)n2=n2+1; /* n2=|{N: N∈C(i), |B(N)|=1}|*/
}/* end if */
} /* end for(j)*/
if(n2==0) /* t=0说明:任意N∈C(i), |B(N)|>1*/
printf("%d,",i);
}/*end for(i)*/
}
程序输出: A=11,17,23,27,29,35,37,41,47,53
海湾 于 06-5-17 09:38 写道:
5月17日:
(各位一定要正确面对自己的不足,做不出这道题是正常的,不要花太多时间了:D)
已知两个1到30之间的数字,甲知道两数之和,乙知道两数之积。
甲问乙:“你知道是哪两个数吗?”乙说:“不知道”;
乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”;
于是,乙 说:“那我知道了”;
随后甲也说:“那我也知道了”;
问:这两个数是什么?
说老实话,我也不会做这道题目::27:
公布标准答案:
允许两数重复的情况下:
答案为x=1,y=4;甲知道和A=x+y=5,乙知道积B=x*y=4
不允许两数重复的情况下有两种答案:
答案1:为x=1,y=6;甲知道和A=x+y=7,乙知道积B=x*y=6
答案2:为x=1,y=8;甲知道和A=x+y=9,乙知道积B=x*y=8
解:
设这两个数为x,y.
甲知道两数之和 A=x+y;
乙知道两数之积 B=x*y;
该题分两种情况 :
允许重复, 有(1 B=x*y 解不唯一
=> B=x*y 为非质数
又∵ x ≠ y
∴ B ≠ k*k (其中k∈N)
结论(推论1):
B=x*y 非质数且 B ≠ k*k (其中k∈N)
即:B ∈(6,8,10,12,14,15,18,20...)
证明过程略。
2)由题设条件:甲不知道答案
A=x+y 解不唯一
=> A >= 5;
分两种情况:
A=5,A=6时x,y有双解
A>=7 时x,y有三重及三重以上解
假设 A=x+y=5
则有双解
x1=1,y1=4;
x2=2,y2=3
代入公式B=x*y:
B1=x1*y1=1*4=4;(不满足推论1,舍去)
B2=x2*y2=2*3=6;
得到唯一解x=2,y=3即甲知道答案。
与题设条件:"甲不知道答案"相矛盾 ,
故假设不成立,A=x+y≠5
假设 A=x+y=6
则有双解。
x1=1,y1=5;
x2=2,y2=4
代入公式B=x*y:
B1=x1*y1=1*5=5;(不满足推论1,舍去)
B2=x2*y2=2*4=8;
得到唯一解x=2,y=4
即甲知道答案
与题设条件:"甲不知道答案"相矛盾
故假设不成立,A=x+y≠6
当A>=7时
∵ x,y的解至少存在两种满足推论1的解
B1=x1*y1=2*(A-2)
B2=x2*y2=3*(A-3)
∴ 符合条件
结论(推论2):A >= 7
3)由题设条件:乙说"那我知道了"
=>乙通过已知条件B=x*y及推论(1)(2)可以得出唯一解
即:
A=x+y, A >= 7
B=x*y, B ∈(6,8,10,12,14,15,16,18,20...)
1 8 时:容易证明均为多重解
结论:
当B=6时有唯一解 x=1,y=6当B=8时有唯一解 x=1,y=8
4)由题设条件:甲说"那我也知道了"
=> 甲通过已知条件A=x+y及推论(3)可以得出唯一解
综上所述,原题所求有两组解:
x1=1,y1=6
x2=1,y2=8
当x<=y时,有(1 <= x <= y <= 30);
同理可得唯一解 x=1,y=4
5月18日:
五个海盗抢到了100颗宝石,每一颗都一样大小并且价值连城。他们决定这么分:抽签决定自己的号码(1、2、3、4、5)。首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则他将被扔进大海喂鲨鱼。如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意该方案时,按照他的方案进行分配,否则,他将被扔进大海喂鲨鱼,依此类推。
条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。
提示:海盗的判断原则:(1)保命;(2)尽量多得宝石;(3)尽量多杀人。
问题:最后的分配结果如何?或者说:第一个海盗提出怎样的分配方案才能使自己的收益最大化?
[ 本贴由 海湾 于 06-5-18 09:38 最后编辑 ]
1号海盗如果能保住命,就会按照他的方案进行分配,也就不存在2号、3号……海盗继续提方案,也就没有任何人会被喂鲨鱼,因此题目中的分配原则1保命和原则3多杀人是矛盾的,不成立!
首选分配方案是:第一个海盗拿100颗钻石,其他海盗都是0
次选分配方案是:第一个海盗拿99颗钻石,第四个海盗拿1颗钻石,其他海盗都是0
分析过程很简单,先从最简单的开始:
1、首先从第5个海盗开始分析:他没有性命之虞,因此他的最大目标是拿到所有钻石,因此前面无论谁提出任何分配方案他都会反对。
2、然后是第4个海盗,因为他已经了解到第5个海盗的立场,他为了保命不论如何都不能轮到自己来分配,因为他无论如何分配都会丢命,所以为了保命无论前面的人提出任何方案他都会赞同。
3、第3个海盗因为很清楚第4第5个海盗的立场,所以他也没有性命之虞,因此他的最大目标也是拿到所有钻石,因此前面无论谁提出任何分配方案他也都会反对。
4、第2个海盗因为已经知道后面几个海盗将要作出的选择,如果轮到他来分配只能得到一票支持,因此他无论如何分配都会丢命,所以为了保命他会无条件赞同第1个海盗的方案。
5、第1个海盗从上述推断知道无论如何分配3、5海盗肯定反对,2、4海盗肯定支持,再加上自己一票已经有2/3的优势。
所以他的最佳分配方案是自己留着100颗钻石。
但是他为了预防第4个海盗对第3个海盗进行投机的风险,他可以选择给他分配一颗钻石。
小天分析得很有道理。
我看了答案了,不是这样的,但没看明白。
海湾 于 06-5-17 17:49 写道:
说老实话,我也不会做这道题目::27:
公布标准答案:
允许两数重复的情况下:
答案为x=1,y=4;甲知道和A=x+y=5,乙知道积B=x*y=4
不允许两数重复的情况下有两种答案:
答案1:为x=1,y=6;甲知道和A=x+y=7,乙知道积B=x*y=6
答案2:为x=1,y=8;甲知道和A=x+y=9,乙知道积B=x*y=8
...
感觉不严谨。
后边的数都没证明怎么能说有多解呢?
1,10 X+Y=11,X*Y=10
1,22 X+Y=23,x*y=22
1,26 x+y=27,x*y=26