50个人围成一圈数到三和三的倍数时出圈,在原来的位置是多少




[java]  view plain copy
  1. /*   
  2.  * 有50个人站成一个圈,   
  3.  * 第一个人开始数数(从1开始),每数到3或者3的倍数此人就退出   
  4.  * 最后剩下的人是多少号?(编程实现)   
  5.  */    
  6. public class tai {  
  7.   
  8.      public void  test(){     
  9.            
  10.         //定义数组并编号     
  11.         int[] array = new int[50];     
  12.         for (int i = 0; i < array.length; i++) {     
  13.             array[i] = i+1;     
  14.         }     
  15.              
  16.         //当前数数人的编号     
  17.         int id = 0;     
  18.         //当前要数的数字     
  19.         int number = 1;     
  20.         //数组中值为0的元素个数     
  21.         int count = 0;     
  22.              
  23.         for(;;){     
  24.             if(number%3==0){     
  25.                 array[id]=0;     
  26.                 count ++;     
  27.                 if(count==array.length-1){     
  28.                     break;     
  29.                 }     
  30.             }     
  31.             number++;     
  32.             while(true){     
  33.                 if(id < array.length-1){     
  34.                     id++;     
  35.                 }else{     
  36.                     id = 0;     
  37.                 }     
  38.                 if(array[id]!=0)break;     
  39.             }     
  40.         }     
  41.              
  42.              
  43.              
  44.         for (int i = 0; i < array.length; i++) {     
  45.             if(array[i]!=0){     
  46.                 System.out.println("最终留下的会是第"+array[i]+"个人");     
  47.             }     
  48.         }     
  49.              
  50.     }     
  51.     
  52.       
  53.     public static void main(String[] args) {  
  54.         new tai().test();  
  55.     }  
  56.   
  57. }  
  58.   
  59. //注:本解法的原理:  
  60. //一数组,大小为50,元素从1到50排列。数数后,每数到3的倍数,数数者的值变为0.  
  61. //下一轮数数时,值为0的元素将不能参与数数。当值为0的元素的个数为49时,游戏结束。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值