找回密码
 欢迎注册
查看: 813|回复: 28

[讨论] (2020 浙江高三竞赛题)环中取数

[复制链接]
发表于 2026-1-26 07:08:13 | 显示全部楼层 |阅读模式

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

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

×
将 $1 ~ n$ 的数字按顺时针方向围成一个圆圈,然后从1开始,按顺时针依次隔一个拿走,即拿走$1,3,5, \cdots$, 这个过程一直进行下去,直到剩下最后一个数字,则最后剩下的数字是_____.

(n=2020 in the original problem).
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2026-1-26 08:35:17 | 显示全部楼层
  1. #include <iostream>
  2. #include <cassert>
  3. #include <vector>

  4. unsigned cycle_remove(unsigned n)
  5. {
  6.         assert(n>0);
  7.         std::vector<decltype(n)> v(n);

  8.         auto debug_output=[&v](unsigned cnt)
  9.         {
  10.         #ifdef _DEBUG
  11.                 for(unsigned i=0; i<cnt; ++i)
  12.                         std::cout<<v[i]<<' ';
  13.                 std::cout<<std::endl;
  14.         #endif
  15.         };
  16.         for(unsigned i=0; i<n; ++i)
  17.         {
  18.                 v[i]=i+1;
  19.         }
  20.         unsigned cnt = n;
  21.         // when off is 0, we remove 0th, 2nd, 4th,...
  22.         // when off is 1, we remove  1st, 3rd, 5th, ...
  23.         int off=0;
  24.         debug_output(cnt);
  25.         while(cnt!=1)
  26.         {
  27.                 for(unsigned i=0; i<(cnt+off)/2; ++i)
  28.                 {
  29.                         v[i]=v[2*i+(off+1)%2];
  30.                 }
  31.                 auto oldoff=off;

  32.                 if( (cnt%2)!= 0 && ++off==2)
  33.                 {
  34.                                 off=0;
  35.                 }
  36.                 cnt = (cnt+oldoff)/2;
  37.                 debug_output(cnt);
  38.         }
  39.         return v[0];
  40. }

  41. int main()
  42. {
  43.         for(unsigned u = 3; u<2024; ++u)
  44.                 std::cout<<u<<"\t\t\t"<<cycle_remove(u)<<std::endl;
  45.         return 0;
  46. }
复制代码


部分输出结果
  1. 3                        2
  2. 4                        4
  3. 5                        2
  4. 6                        4
  5. 7                        6
  6. 8                        8
  7. 9                        2
  8. 10                        4
  9. 11                        6
  10. 12                        8
  11. 13                        10
  12. 14                        12
  13. 15                        14
  14. 16                        16
  15. 17                        2
  16. 18                        4
  17. 19                        6
  18. 20                        8
  19. 21                        10
  20. 22                        12
  21. 23                        14
  22. 24                        16
  23. 25                        18
  24. 26                        20
  25. 27                        22
  26. 28                        24
  27. 29                        26
  28. 30                        28
  29. 31                        30
  30. 32                        32
  31. 33                        2
  32. 34                        4
  33. 35                        6
  34. 36                        8
  35. 37                        10
  36. 38                        12
  37. 39                        14
  38. 40                        16
  39. 41                        18
  40. 42                        20
  41. 43                        22
  42. 44                        24
  43. 45                        26
  44. 46                        28
  45. 47                        30
  46. 48                        32
  47. 49                        34
  48. 50                        36
  49. 51                        38
  50. 52                        40
  51. 53                        42
  52. 54                        44
  53. 55                        46
  54. 56                        48
  55. 57                        50
  56. 58                        52
  57. 59                        54
  58. 60                        56
  59. 61                        58
  60. 62                        60
  61. 63                        62
  62. 64                        64
  63. 65                        2
  64. 66                        4
  65. 67                        6
  66. 68                        8
  67. 69                        10
  68. 70                        12
  69. 71                        14
  70. 72                        16
  71. 73                        18
  72. 74                        20
  73. 75                        22
  74. 76                        24
  75. 77                        26
  76. 78                        28
  77. 79                        30
  78. 80                        32
  79. 81                        34
  80. 82                        36
  81. 83                        38
  82. 84                        40
  83. 85                        42
  84. 86                        44
  85. 87                        46
  86. 88                        48
  87. 89                        50
  88. 90                        52
  89. 91                        54
  90. 92                        56
  91. 93                        58
  92. 94                        60
  93. 95                        62
  94. 96                        64
  95. 97                        66
  96. 98                        68
  97. 99                        70
  98. 100                        72
  99. 101                        74
  100. 102                        76
  101. 103                        78
  102. 104                        80
  103. 105                        82
  104. 106                        84
  105. 107                        86
  106. 108                        88
  107. 109                        90
  108. 110                        92
  109. 111                        94
  110. 112                        96
  111. 113                        98
  112. 114                        100
  113. 115                        102
  114. 116                        104
  115. 117                        106
  116. 118                        108
  117. 119                        110
  118. 120                        112
  119. 121                        114
  120. 122                        116
  121. 123                        118
  122. 124                        120
  123. 125                        122
  124. 126                        124
  125. 127                        126
  126. 128                        128
  127. 129                        2
  128. 130                        4
  129. 131                        6
  130. 132                        8
  131. 133                        10
  132. 134                        12
  133. 135                        14
  134. 136                        16
  135. 137                        18
  136. 138                        20
  137. 139                        22
  138. 140                        24
  139. 141                        26
  140. 142                        28
  141. 143                        30
  142. 144                        32
  143. 145                        34
  144. 146                        36
  145. 147                        38
  146. 148                        40
  147. 149                        42
  148. 150                        44
  149. 151                        46
  150. 152                        48
  151. 153                        50
  152. 154                        52
  153. 155                        54
  154. 156                        56
  155. 157                        58
  156. 158                        60
  157. 159                        62
  158. 160                        64
  159. 161                        66
  160. 162                        68
  161. 163                        70
  162. 164                        72
  163. 165                        74
  164. 166                        76
  165. 167                        78
  166. 168                        80
  167. 169                        82
  168. 170                        84
  169. 171                        86
  170. 172                        88
  171. 173                        90
  172. 174                        92
  173. 175                        94
  174. 176                        96
  175. 177                        98
  176. 178                        100
  177. 179                        102
  178. 180                        104
  179. 181                        106
  180. 182                        108
  181. 183                        110
  182. 184                        112
  183. 185                        114
  184. 186                        116
  185. 187                        118
  186. 188                        120
  187. 189                        122
  188. 190                        124
  189. 191                        126
  190. 192                        128
  191. 193                        130
  192. 194                        132
  193. 195                        134
  194. 196                        136
  195. 197                        138
  196. 198                        140
  197. 199                        142
  198. 200                        144
  199. 201                        146
  200. 202                        148
  201. 203                        150
  202. 204                        152
  203. 205                        154
  204. 206                        156
  205. 207                        158
  206. 208                        160
  207. 209                        162
  208. 210                        164
  209. 211                        166
  210. 212                        168
  211. 213                        170
  212. 214                        172
  213. 215                        174
  214. 216                        176
  215. 217                        178
  216. 218                        180
  217. 219                        182
  218. 220                        184
  219. 221                        186
  220. 222                        188
  221. 223                        190
  222. 224                        192
  223. 225                        194
  224. 226                        196
  225. 227                        198
  226. 228                        200
  227. 229                        202
  228. 230                        204
  229. 231                        206
  230. 232                        208
  231. 233                        210
  232. 234                        212
  233. 235                        214
  234. 236                        216
  235. 237                        218
  236. 238                        220
  237. 239                        222
  238. 240                        224
  239. 241                        226
  240. 242                        228
  241. 243                        230
  242. 244                        232
  243. 245                        234
  244. 246                        236
  245. 247                        238
  246. 248                        240
  247. 249                        242
  248. 250                        244
  249. 251                        246
  250. 252                        248
  251. 253                        250
  252. 254                        252
  253. 255                        254
  254. 256                        256
  255. 257                        2
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-26 09:13:32 | 显示全部楼层
猴子选大王
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-26 09:29:31 | 显示全部楼层
  1. f[n_]:=If[n==1,1,2*(n-2^Floor[Log2[n-1]])]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2026-1-26 11:40:34 | 显示全部楼层

有没有什么解析或其它适合手工操作的算法?

点评

约瑟夫环,可以从小的n开始,找规律求通项公式  发表于 2026-1-26 14:51
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-26 15:01:26 | 显示全部楼层
做题人生 发表于 2026-1-26 11:40
有没有什么解析或其它适合手工操作的算法?

$$2*(N-2^k)$$

点评

隔两个数划掉一个数剩下数的公式是怎么样的  发表于 2026-2-14 15:37
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2026-1-28 01:46:38 | 显示全部楼层
@northwolves, @aimisiyou 感谢!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-28 06:58:03 | 显示全部楼层
将1——2020的数字按顺时针方向围成一个圆圈,然后从1开始,按顺时针依次隔2个拿走1个,即拿走 1, 4, 7, ...,  这个过程一直进行下去,直到剩下最后一个数字,则最后剩下的数字是_____.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-28 08:49:56 | 显示全部楼层
本帖最后由 aimisiyou 于 2026-1-28 08:53 编辑
王守恩 发表于 2026-1-28 06:58
将1——2020的数字按顺时针方向围成一个圆圈,然后从1开始,按顺时针依次隔2个拿走1个,即拿走 1, 4, 7, .. ...


665
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-1-28 18:06:48 | 显示全部楼层
本帖最后由 Jack315 于 2026-1-28 18:11 编辑

编程模拟取数过程,最后剩下的是 1992 。下图是完整的模拟过程:
环中取数.png

数据文件:
环中取数.txt (10.75 KB, 下载次数: 0)

点评

题目是 1, 3, 5, ...,然后有人改了题目,变成 1, 4, 7, ...  发表于 2026-1-29 13:28
依次拿走的不是1,4,7,……么?  发表于 2026-1-29 09:58
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2026-5-1 17:41 , Processed in 0.071744 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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