免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: connet
打印 上一主题 下一主题

[算法] 向“世界上最快的判断32位整数二进制中1的个数的算法”挑战 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-07-20 14:52 |只看该作者
to conect:
无论怎么算,首先应该正确。
你的代码速度倒是够快,可怎么总是返回0 ?我特别不解,不知道是不是我把你的函数理解错了?

我测试了看到的两个你的版本,测试代码如下:


  1. int one_in_char[256];
  2. int func1(unsigned int  *v)
  3. {
  4.     unsigned char *ptr=(unsigned char *)v;
  5.     return one_in_char[ptr[0]]+one_in_char[ptr[1]]+one_in_char[ptr[2]]+one_in_char[ptr[3]];
  6. }

  7. int func2(int v)
  8. {
  9.     int n=v;
  10.     unsigned char *ptr=(unsigned char *)&n;
  11.     return one_in_char[ptr[0]]+one_in_char[ptr[1]]+one_in_char[ptr[2]]+one_in_char[ptr[3]];
  12. }

  13. int main(int argc, char **argv)
  14. {
  15.         unsigned int k= 6;
  16.         int i;
  17.         for(i=0;i<10000;i++)
  18.         {
  19.                 if(func1(&i)!=0) printf("func1 !=0 on %d\n",i);
  20.                 if(func2(i)!=0) printf("func2 !=0 on %d\n",i);
  21.         }
  22.         printf("finish\n",func2(k));
  23.        
  24.           return 0;
  25. }
复制代码


没有一个不等于0的输出,我的是gcc-4.0.3
gcc -O2或者不优化结果都相同。

论坛徽章:
0
22 [报告]
发表于 2006-07-20 14:56 |只看该作者
楼主的方法确实不错,受教了

论坛徽章:
0
23 [报告]
发表于 2006-07-20 14:57 |只看该作者
原帖由 liubinbj 于 2006-7-20 14:52 发表
to conect:
无论怎么算,首先应该正确。
你的代码速度倒是够快,可怎么总是返回0 ?我特别不解,不知道是不是我把你的函数理解错了?

我测试了看到的两个你的版本,测试代码如下:

[code]
int one_in_ch ...

没设置one_in_char

论坛徽章:
0
24 [报告]
发表于 2006-07-20 14:59 |只看该作者
[quote]原帖由 [i]liubinbj[/i] 于 2006-7-20 14:52 发表
to conect:
无论怎么算,首先应该正确。
你的代码速度倒是够快,可怎么总是返回0 ?我特别不解,不知道是不是我把你的函数理解错了?

我测试了看到的两个你的版本,测试代码如下:

[code]
int one_in_ch ... [/quote]
const int one_in_char[256]=
{
    0, 1, 1, 2, 1, 2,2,3
......
                              ,8
}
one_in_char 表示 0-255 这256 个数每个的1 的数目。我的测试程序只测试速度, 没有初始化这256个值。

论坛徽章:
0
25 [报告]
发表于 2006-07-20 15:03 |只看该作者
都别吵啦。
这个题目在这里很久以前就讨论过,不止一次。

网上有关于这个题目的总结性网页,大家不用闭门造车了。
http://www.everything2.com/index.pl?node_id=1181258

论坛徽章:
0
26 [报告]
发表于 2006-07-20 16:25 |只看该作者
看来我比较笨,半天才搞懂是怎么回事……

论坛徽章:
0
27 [报告]
发表于 2006-07-20 16:43 |只看该作者
原帖由 十全大补丸 于 2006-7-20 16:25 发表
看来我比较笨,半天才搞懂是怎么回事……


这里讲的比较详细 http://www.everything2.com/index.pl?node_id=1181258
就是查表法

论坛徽章:
0
28 [报告]
发表于 2006-07-20 16:43 |只看该作者
学习学习,希望有高手出来写出更牛的方法。

论坛徽章:
0
29 [报告]
发表于 2006-07-20 17:26 |只看该作者
共同进步.

论坛徽章:
0
30 [报告]
发表于 2006-07-20 17:57 |只看该作者
我来突破楼主的速度


  1. unsigned char table[]={
  2. 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,
  3. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  4. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  5. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  6. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  7. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  8. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  9. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  10. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  11. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  12. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  13. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  14. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  15. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  16. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  17. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  18. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  19. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  20. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  21. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  22. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  23. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  24. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  25. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  26. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  27. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  28. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  29. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  30. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  31. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  32. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  33. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  34. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  35. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  36. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  37. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  38. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  39. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  40. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  41. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  42. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  43. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  44. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  45. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  46. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  47. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  48. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  49. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  50. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  51. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  52. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  53. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  54. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  55. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  56. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  57. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  58. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  59. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  60. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  61. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  62. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  63. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  64. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  65. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  66. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  67. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  68. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  69. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  70. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  71. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  72. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  73. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  74. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  75. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  76. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  77. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  78. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  79. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  80. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  81. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  82. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  83. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  84. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  85. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  86. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  87. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  88. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  89. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  90. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  91. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  92. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  93. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  94. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  95. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  96. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  97. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  98. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  99. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  100. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  101. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  102. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  103. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  104. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  105. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  106. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  107. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  108. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  109. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  110. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  111. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  112. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  113. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  114. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  115. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  116. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  117. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  118. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  119. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  120. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  121. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  122. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  123. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  124. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  125. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  126. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  127. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  128. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  129. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  130. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  131. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  132. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  133. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  134. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  135. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  136. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  137. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  138. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  139. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  140. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  141. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  142. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  143. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  144. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  145. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  146. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  147. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  148. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  149. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  150. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  151. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  152. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  153. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  154. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  155. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  156. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  157. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  158. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  159. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  160. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  161. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  162. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  163. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  164. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  165. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  166. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  167. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  168. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  169. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  170. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  171. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  172. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  173. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  174. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  175. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  176. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  177. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  178. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  179. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  180. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  181. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  182. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  183. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  184. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  185. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  186. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  187. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  188. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  189. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  190. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  191. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  192. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  193. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  194. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  195. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  196. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  197. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  198. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  199. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  200. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  201. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  202. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  203. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  204. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  205. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  206. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  207. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  208. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  209. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  210. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  211. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  212. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  213. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  214. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  215. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  216. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  217. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  218. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  219. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  220. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  221. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  222. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  223. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  224. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  225. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  226. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  227. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  228. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  229. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  230. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  231. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  232. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  233. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  234. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  235. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  236. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  237. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  238. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  239. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  240. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  241. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  242. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  243. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  244. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  245. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  246. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  247. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  248. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  249. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  250. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  251. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  252. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  253. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  254. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  255. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  256. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  257. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  258. 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
  259. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  260. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  261. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  262. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  263. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  264. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  265. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  266. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  267. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  268. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  269. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  270. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  271. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  272. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  273. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  274. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  275. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  276. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  277. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  278. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  279. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  280. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  281. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  282. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  283. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  284. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  285. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  286. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  287. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  288. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  289. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  290. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  291. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  292. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  293. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  294. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  295. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  296. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  297. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  298. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  299. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  300. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  301. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  302. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  303. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  304. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  305. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  306. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  307. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  308. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  309. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  310. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  311. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  312. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  313. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  314. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  315. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  316. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  317. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  318. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  319. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  320. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  321. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  322. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  323. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  324. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  325. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  326. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  327. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  328. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  329. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  330. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  331. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  332. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  333. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  334. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  335. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  336. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  337. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  338. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  339. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  340. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  341. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  342. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  343. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  344. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  345. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  346. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  347. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  348. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  349. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  350. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  351. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  352. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  353. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  354. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  355. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  356. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  357. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  358. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  359. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  360. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  361. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  362. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  363. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  364. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  365. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  366. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  367. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  368. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  369. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  370. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  371. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  372. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  373. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  374. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  375. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  376. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  377. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  378. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  379. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  380. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  381. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  382. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  383. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  384. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  385. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  386. 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
  387. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  388. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  389. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  390. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  391. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  392. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  393. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  394. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  395. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  396. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  397. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  398. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  399. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  400. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  401. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  402. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  403. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  404. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  405. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  406. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  407. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  408. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  409. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  410. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  411. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  412. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  413. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  414. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  415. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  416. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  417. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  418. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  419. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  420. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  421. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  422. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  423. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  424. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  425. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  426. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  427. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  428. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  429. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  430. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  431. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  432. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  433. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  434. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  435. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  436. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  437. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  438. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  439. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  440. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  441. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  442. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  443. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  444. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  445. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  446. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  447. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  448. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  449. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  450. 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
  451. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  452. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  453. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  454. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  455. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  456. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  457. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  458. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  459. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  460. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  461. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  462. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  463. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  464. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  465. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  466. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  467. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  468. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  469. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  470. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  471. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  472. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  473. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  474. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  475. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  476. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  477. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  478. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  479. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  480. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  481. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  482. 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
  483. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  484. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  485. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  486. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  487. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  488. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  489. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  490. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  491. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  492. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  493. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  494. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  495. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  496. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  497. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  498. 5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
  499. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  500. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  501. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  502. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  503. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  504. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  505. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  506. 6,7,7,8,7,8,8,9,7,8,8,9,8,9,9,10,
  507. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  508. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  509. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  510. 7,8,8,9,8,9,9,10,8,9,9,10,9,10,10,11,
  511. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  512. 8,9,9,10,9,10,10,11,9,10,10,11,10,11,11,12,
  513. 9,10,10,11,10,11,11,12,10,11,11,12,11,12,12,13,
  514. };

  515. int func5(unsigned int m)
  516. {
  517.     unsigned n;
  518.         n = table[m & 0x1FFF];
  519.         n+= table[m>>13 & 0x1FFF];
  520.         n+= table[m>>26 & 0x3F];
  521.         return n;
  522. }

复制代码


在我的机器上,用楼主的计算法,从0-0x7FFFFFFF
楼主的算法             我的算法
28.4203秒            17.0208秒

还快了不少,世界记录又被打破了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP