楼主: 〇〇

欧拉计划747:三角披萨

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
41#
 楼主| 发表于 2021-2-19 21:29 | 只看该作者
最大的c,d

  1. >>>> def f3a(n):
  2. ....  s=0
  3. ....  for c in range(1,n-1):
  4. ....     w=(c* n)*(-1 - c + n  + c* n )
  5. ....     d=int( -1 - c + n + 2* c* n - 2* pow(w,0.5))
  6. ....     if c>d:s-=d*d*6;print('last c,d=',d,c);break
  7. ....     x=(-1-c-d-n)**2-4*n*(1+d)*(1+c)
  8. ....     #print(n,c,x,d)
  9. ....     s+=12*d
  10. ....     if x==0:
  11. ....      s-=3
  12. ....      if c!=d:s-=3
  13. ....     if c==d:s-=12*d-6
  14. ....  return s
  15. ....
  16. >>>> t=time.time();print(f3a(10**8+1));print(time.time()-t)
  17. ('last c,d=', 4999, 5000)
  18. 2402343978
  19. 0.0780000686646
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
42#
 楼主| 发表于 2021-2-20 09:38 | 只看该作者
用不等式算出不同(c,d)的最大n

  1. In[4]:= Reduce[{
  2.             1<= -1 - c + n + 2* c* n - 2* Sqrt[(c* n)*(-1 - c + n  + c* n )]<=c
  3.         },n]

  4. Out[4]= (c == 1 && (n == 1 || n == 9)) ||

  5.                                                         2
  6. >    (c > 1 && (1 <= n <= 2 + 3 c - 2 Sqrt[2] Sqrt[c + c ] ||

  7.                                        2                       2
  8. >        2 + 3 c + 2 Sqrt[2] Sqrt[c + c ] <= n <= 1 + 4 c + 4 c ))

  9. 用公式算出的
  10. >>>> for c in range(1,30):print(c, int(2 + 3*c + 2 *pow(2,0.5)* pow(c + c*c,0.5)))
  11. (1, 9)
  12. (2, 14)
  13. (3, 20)
  14. (4, 26)
  15. (5, 32)
  16. (6, 38)
  17. (7, 44)
  18. (8, 50)
  19. (9, 55)
  20. (10, 61)
  21. (11, 67)
  22. (12, 73)
  23. (13, 79)
  24. (14, 84)
  25. (15, 90)
  26. (16, 96)
  27. (17, 102)
  28. (18, 108)
  29. (19, 114)
  30. (20, 119)
  31. (21, 125)
  32. (22, 131)
  33. 与实际测试的能对上,其他都差1,只有50能得到x==0,所以不差
  34. >>>> def fx(m):
  35. ....  s=0
  36. ....  up=0
  37. ....  d0=0
  38. ....  for n in range(1,m-1):
  39. ....     c=1;
  40. ....     w=(c* n)*(-1 - c + n  + c* n )
  41. ....     d=int( -1 - c + n + 2* c* n - 2* pow(w,0.5))
  42. ....     if d0<d:d0=d;print(n,c,0,d)
  43. ....
  44. >>>> fx(**)
  45. (1, 1, 0, 1)
  46. (15, 1, 0, 2)
  47. (21, 1, 0, 3)
  48. (27, 1, 0, 4)
  49. (33, 1, 0, 5)
  50. (39, 1, 0, 6)
  51. (45, 1, 0, 7)
  52. (50, 1, 0, 8)
  53. (56, 1, 0, 9)
  54. (62, 1, 0, 10)
  55. (68, 1, 0, 11)
  56. (74, 1, 0, 12)
  57. (80, 1, 0, 13)
  58. (85, 1, 0, 14)
  59. (91, 1, 0, 15)
  60. (97, 1, 0, 16)


复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
43#
 楼主| 发表于 2021-2-20 12:56 | 只看该作者
本帖最后由 〇〇 于 2021-2-20 16:09 编辑

有规律,都是+6,+5这种

  1. >>>> def fx(m):
  2. ....  s=0
  3. ....  up=[0]
  4. ....  d0=0
  5. ....  for n in range(1,m-1):
  6. ....     c=1;
  7. ....     w=(c* n)*(-1 - c + n  + c* n )
  8. ....     d=int( -1 - c + n + 2* c* n - 2* pow(w,0.5))
  9. ....     if d0<d:d0=d;up.append(n)
  10. ....  for x in range(1,len(up)): print( up[x],up[x]-up[x-1]-6)
  11. ....
  12. >>>> fx(401)
  13. (1, -5)
  14. (15, 8)
  15. (21, 0)
  16. (27, 0)
  17. (33, 0)
  18. (39, 0)
  19. (45, 0)
  20. (50, -1)
  21. (56, 0)
  22. (62, 0)
  23. (68, 0)
  24. (74, 0)
  25. (80, 0)
  26. (85, -1)
  27. (91, 0)
  28. (97, 0)
  29. (103, 0)
  30. (109, 0)
  31. (115, 0)
  32. (120, -1)
  33. (126, 0)
  34. (132, 0)
  35. (138, 0)
  36. (144, 0)
  37. (150, 0)
  38. (155, -1)
  39. (161, 0)
  40. (167, 0)
  41. (173, 0)
  42. (179, 0)
  43. (185, 0)
  44. (190, -1)
  45. (196, 0)
  46. (202, 0)
  47. (208, 0)
  48. (214, 0)
  49. (220, 0)
  50. (225, -1)
  51. (231, 0)
  52. (237, 0)
  53. (243, 0)
  54. (249, 0)
  55. (255, 0)
  56. (260, -1)
  57. (266, 0)
  58. (272, 0)
  59. (278, 0)
  60. (284, 0)
  61. (289, -1)
  62. (295, 0)
  63. (301, 0)
  64. (307, 0)
  65. (313, 0)
  66. (319, 0)
  67. (324, -1)
复制代码

很大的数也差不多

  1. >>>> for c in range(100000001,100000030):print(c, int(2 + 3*c + 2 *pow(2,0.5)* pow(c + c*c,0.5)))
  2. (100000001, 582842721)
  3. (100000002, 582842727)
  4. (100000003, 582842733)
  5. (100000004, 582842739)
  6. (100000005, 582842745)
  7. (100000006, 582842750)
  8. (100000007, 582842756)
  9. (100000008, 582842762)
复制代码

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表