90%通过,剩下10%求优化
#include <iostream>
using namespace std;
int main(){
int n, k, m;
cin >> n >> k >> m;
int a[n+1], i;
for(i = 1; i <= n; i++){
a[i] = 1;
}
int j = 0, cnt = 0;
while(cnt <= n){
if(k > n)
k %= n;
if(a[k] == 1){
j++;
if(j == m){
if(cnt == n-1){
cout << k << endl;
break;
}
a[k] = 0;
j = 0;
cnt++;
}
}
k++;
}
return 0;
} 第一次做的时候看错题意,以为是1-n,下面是改进,从0到n-1
#include <iostream>
using namespace std;
int main(){
int n, k, m;
cin >> n >> k >> m;
int a[n], i;
for(i = 0; i < n; i++){
a[i] = 1;
}
int j = 0, cnt = 0;
while(cnt <= n){
if(k >= n)
k %= n;
if(a[k] == 1){
j++;
if(j == m){
if(cnt == n-1){
cout << k << endl;
break;
}
a[k] = 0;
j = 0;
cnt++;
}
}
k++;
}
return 0;
} 
查看29道真题和解析