UVA And Then There Was One
约瑟夫环问题,只不过每次删除一个后,在移m的倍数。
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <cmath> #include <vector> #include <algorithm> using namespace std; #define lowbit(x) (x&(-x)) #define max(x,y) (x>y?x:y) #define min(x,y) (x<y?x:y) #define mem(a) (memset(a,0,sizeof(a))) typedef long long ll; int main() { int N,k,m; while(cin>>N>>k>>m && (N && k && m)){ int ans=0; for(int i=2;i<=N-1;i++){ ans=(ans+k)%i; } cout<<((ans+m)%N+1)<<endl; } return 0; }
简单介绍一下约瑟夫问题
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1073
#include<iostream> #include<queue> using namespace std; int main() { int N,k; while(cin>>N>>k){ int ans=0; for(int i=2;i<=N;i++){ ans=(ans+k)%i; } cout<<ans+1<<endl; } return 0; }