直接模拟就好,加一个标志数组表示此人是否被挑出
#include<cstdio> #include<cstring> using namespace std; char kids[100][20]; bool flag[100]={false}; //找规律 int main() { int n,w,s; scanf("%d",&n); for(int i = 1; i<=n; ++i) scanf("%s",kids[i]); strcpy(kids[0],kids[n]); scanf("%d,%d",&w,&s); int sum = 0,ans = 0; for(int i = w;;++i) { int t = i%n; if(!flag[t]) sum++; if(sum == s) { printf("%s\n",kids[t]); flag[t] = true; sum = 0 ; ans++; } if(ans==n) break; } return 0; }
用数学公式推导出来更快,不过我有点懒,改天想想怎么推吧。
以上。