1A爽快XD。

模擬 約瑟夫問題 ,可以簡單的推出公式,用 線段樹 管理&找出 下一個離開的是 第幾個 還在的同學。

if(sdu[pos].v>0)k=(k-1+sdu[pos].v-1)%n+1;
else k=((k-1+sdu[pos].v)%n+n)%n+1;

另外還要用到一個數學定理,反質數。

"如果一個數X是反質數,則它的約數的個數大於所有Y(X>Y)的約數的個數。根據定義我們可以看出, 在一個具有相同約數個數的正整數集合中,最小的正整數是反質數。例如約數個數為6的正整數集合{12,18,45,75,175...},只有12是反質數。因為任何一個比12大且約數個數等於6的數,都不滿足反質數定義。所以,尋找不大於N的最大反質數問題可以轉化成,尋找不大於N的約數個數最多的最小正整數。".....轉載自 Beyond the void

這樣就可以直接知道 答案的值是多少了。

我的code

http://codepad.org/WDrrWmqy

 

文章標籤
創作者介紹
創作者 jghs1328 的頭像
jghs1328

jghs1328

jghs1328 發表在 痞客邦 留言(0) 人氣()