约瑟夫环问题打卡

2020-03-31  本文已影响0人  仲夏二十
打卡题

心路历程:在刚开始,我想用数组中元素的状态来表示数字的删减,但是在多次循环时,还是会将已经删去的数字算进去,而且测试范围太大了,所以去看了题解,学习了数学方法求解。

这题在看了题解之后,用了数学方法求解(数字规模太大模拟会超时)。

自己的理解:首先确定一点,我们最后留下的数,下标一定是0,因为从第一次删除一个数开始,数组中的数字顺序变了。

遍历过程

最后的下标一定是0,所以我们进行反推,看看刚开始下标为几在经过遍历后才会变为0。

以第四层为例,由于我们的m=3,所以我们令0+3,但是超过了数组下标,所以进行取余操作,

(0+3)%2,由此,我们可以推出我们的递推公式为(cnt+m)%i。

ac代码
上一篇 下一篇

猜你喜欢

热点阅读