|
|
用不等式算出不同(c,d)的最大n
- In[4]:= Reduce[{
- 1<= -1 - c + n + 2* c* n - 2* Sqrt[(c* n)*(-1 - c + n + c* n )]<=c
- },n]
- Out[4]= (c == 1 && (n == 1 || n == 9)) ||
-
- 2
- > (c > 1 && (1 <= n <= 2 + 3 c - 2 Sqrt[2] Sqrt[c + c ] ||
-
- 2 2
- > 2 + 3 c + 2 Sqrt[2] Sqrt[c + c ] <= n <= 1 + 4 c + 4 c ))
- 用公式算出的
- >>>> for c in range(1,30):print(c, int(2 + 3*c + 2 *pow(2,0.5)* pow(c + c*c,0.5)))
- (1, 9)
- (2, 14)
- (3, 20)
- (4, 26)
- (5, 32)
- (6, 38)
- (7, 44)
- (8, 50)
- (9, 55)
- (10, 61)
- (11, 67)
- (12, 73)
- (13, 79)
- (14, 84)
- (15, 90)
- (16, 96)
- (17, 102)
- (18, 108)
- (19, 114)
- (20, 119)
- (21, 125)
- (22, 131)
- 与实际测试的能对上,其他都差1,只有50能得到x==0,所以不差
- >>>> def fx(m):
- .... s=0
- .... up=0
- .... d0=0
- .... for n in range(1,m-1):
- .... c=1;
- .... w=(c* n)*(-1 - c + n + c* n )
- .... d=int( -1 - c + n + 2* c* n - 2* pow(w,0.5))
- .... if d0<d:d0=d;print(n,c,0,d)
- ....
- >>>> fx(**)
- (1, 1, 0, 1)
- (15, 1, 0, 2)
- (21, 1, 0, 3)
- (27, 1, 0, 4)
- (33, 1, 0, 5)
- (39, 1, 0, 6)
- (45, 1, 0, 7)
- (50, 1, 0, 8)
- (56, 1, 0, 9)
- (62, 1, 0, 10)
- (68, 1, 0, 11)
- (74, 1, 0, 12)
- (80, 1, 0, 13)
- (85, 1, 0, 14)
- (91, 1, 0, 15)
- (97, 1, 0, 16)
复制代码 |
|