摘要: 大意就是给你n个人,编号为1-n。从第一个人开始报数,报到m时候,第m个人出列。然后下个人从1开始报数,逢m出列。问最后出列的人的编号。刚开始用的是循环链表,纯模拟做法。发现当n很大时,铁定TLE。所以上网搜了下,发现有数学方法解决这个问题。思路就是递推,发现子问题,然后由子问题的解推总问题的解。公式就是:f(1) = 0;f(i) = (f(i - 1) + m) % i; (i > 1)公式的含义我解释一下:f(1)代表就一个人玩游戏,所以不需要踢人,第一个人就是获胜者,但为什么是0不是1本身呢?接着看。。。。。f(i)代表剩i个人时要踢的人,f(i - 1)代表剩i - 1时踢掉的 阅读全文
posted @ 2011-11-27 12:17 学-无止境 阅读(192) 评论(0) 推荐(0) 编辑