n個人坐成乙個圓環(編號為1 - n),從第1個人開始報數,數到k的人出列,後面的人重新從1開始報數。問最後剩下的人的編號。
例如:n = 3,k = 2。2號先出列,然後是1號,最後剩下的是3號。
input
2個數n和k,表示n個人,數到k出列。(2 <= n <= 10^18, 2 <= k <= 1000)
output
最後剩下的人的編號
input示例
3 2
output示例
3題解
對於n較小的時候
我們有遞推式f[i]=(f[i-1]+k)%i(
對於k遠小於n,我們可以跳著刪k個以至於不用模i,找一找關係改一下遞推即可。
**
#include
using
namespace
std;
typedef
long
long ll;
const
int mod=1000000007;
ll n,m,ans,x;
int main()
cout
<1;
return
0;}
51nod 1074 約瑟夫環V2
1074 約瑟夫環 v2 基準時間限制 1 秒 空間限制 131072 kb 分值 160 難度 6級演算法題 n個人坐成乙個圓環 編號為1 n 從第1個人開始報數,數到k的人出列,後面的人重新從1開始報數。問最後剩下的人的編號。例如 n 3,k 2。2號先出列,然後是1號,最後剩下的是3號。inp...
51nod 1074 約瑟夫環 V2
1074 約瑟夫環 v2 基準時間限制 1 秒 空間限制 131072 kb 分值 160 難度 6級演算法題 n個人坐成乙個圓環 編號為1 n 從第1個人開始報數,數到k的人出列,後面的人重新從1開始報數。問最後剩下的人的編號。例如 n 3,k 2。2號先出列,然後是1號,最後剩下的是3號。inp...
題解 51nod1074 約瑟夫環V2
原題傳送門 具體數學上看的一愣一愣的,自己瞎想了想好像明白了 假設現在有n nn個人,先是淘汰第k kk個人,剩下 n 1 n 1 n 1 個人是這樣排列的 k 1 k 2 n,1 2,k 2,k 1 k 1,k 2,n,1,2,k 2,k 1 k 1,k 2,n,1,2,k 2,k 1若是我們知道...