數學小技巧 UVA 1394 約瑟夫環

2021-07-16 08:08:49 字數 605 閱讀 1350

約瑟夫環問題:詳解

約瑟夫環(

約瑟夫問題

)是乙個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依

此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0~n-1,最後

[1]結果+1即為原問題的解。

#include "cstdio"

#include "iostream"

#include "cstring"

#include "algorithm"

using namespace std;

/*約瑟夫環

從結果向上推

題意:一共n個數繞成環1-n,一開始在m位置上,每次迴圈走k步,走到的退出

題解:f(x)=(f(x-1)+k)%n; */

int main()

ans=(ans+m)%n +1;//一開始從m開始,題目是1-n 所以要+1

printf("%d\n",ans);

} return 0;

}

UVa 1394 約瑟夫問題的變形

本來是要昨天來寫這學習 的,然後昨晚寢室又斷電了,忍不住在這裡吐槽一下,嗯,寢室天天斷電。題意就是輸入n,k,m三個數,n個數排成乙個圈,第一次刪除m,以後每數k個數刪除一次,求最後乙個被刪除的數。言歸正傳,以前寫過乙個鍊錶的約瑟夫問題,但是在這裡肯定是會超時的。後來看了些參考,終於明白了怎麼做。把...

uva11987 並查集小技巧

大意 維護一種資料結構,支援 幾乎是常數級別的 集合合併 將乙個元素轉移到另乙個集合 詢問每個集合的和與元素個數。program p11987 var n,m,i,p,q,op,top longint f,c,pos,s array 0.500002 of longint function find...

DP 數學小技巧 三個袋子

時間限制 1 sec 記憶體限制 64 mb 平平在公園裡遊玩時撿到了很多小球,而且每個球都不一樣。平平找遍了全身只發現了3個一模一樣的袋子。他打算把這些小球都裝進袋子裡 袋子可以為空 他想知道他總共有多少種放法。將n個不同的球放到3個相同的袋子裡,求放球的方案總數m。結果可能很大,我們僅要求輸出m...