一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

输入在一行中给一个正整数N(≤1000)。

输出格式:

在一行中输出当选猴王的编号。

输入样例:

  1. 11

输出样例:

  1. 7
  1. #include<stdio.h>
  2. int main(){
  3. int n;
  4. scanf("%d", &n);
  5. int monkey[n];
  6. int i;
  7. for(i=0; i<n; i++){//开始所有的猴子都参与报数
  8. monkey[i] = 1;
  9. }
  10. int flag=0;//有效位
  11. int candidate=n;//候选人数
  12. while(candidate!=1){
  13. for(i=0; i<n; i++){
  14. if(monkey[i]){
  15. flag++;
  16. if(flag==3){
  17. monkey[i] = 0;
  18. flag = 0;
  19. candidate--;
  20. //printf("淘汰了猴子%d\n", i+1);
  21. }
  22. }
  23. }
  24. }
  25. for(i=0; i<n; i++){
  26. if(monkey[i]){
  27. printf("%d", i+1);
  28. }
  29. }
  30. return 0;
  31. }