zoukankan      html  css  js  c++  java
  • C语言 · 筛选号码

    算法训练 筛选号码  
    时间限制:1.0s   内存限制:512.0MB
        
    问题描述
      有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。
      问最后留下的是原来第几号的那位。
      举个例子,8个人围成一圈:
      1 2 3 4 5 6 7 8
      第1次报数之后,3退出,剩下:
      1 2 4 5 6 7 8 (现在从4开始报数)
      第2次报数之后,6退出,剩下:
      1 2 4 5 7 8 (现在从7开始报数)
      第3次报数之后,1退出,剩下:
      2 4 5 7 8 (现在从2开始报数)
      第4次报数之后,5退出,剩下:
      2 4 7 8 (现在从7开始报数)
      第5次报数之后,2退出,剩下:
      4 7 8 (现在从4开始报数)
      第6次报数之后,8退出,剩下:
      4 7 (现在从4开始报数)
      最后一次报数之后,4退出,剩下:
      7.
      所以,最后留下来的人编号是7。
    输入格式
      一个正整数n,(1<n<10000)
    输出格式
      一个正整数,最后留下来的那个人的编号。
    样例输入
    8
    样例输出
    7
    数据规模和约定
      对于100%的数据,1<n<10000。
     
     1 #include<stdio.h>
     2 int main(){
     3     int n,i;
     4     scanf("%d",&n);
     5     int a[n];
     6     for(i=0;i<n;i++) a[i]=i+1;//数组赋值 
     7     int flag=0;//定义计数标记 
     8     int q=n;//元素总数 
     9     
    10     for(i=0;;i++){
    11         if(i==n) i=0;//遍历到队伍末尾跳转到队首继续遍历 
    12         if(a[i]!=0) flag++;//元素不为0,标记+1 
    13         else continue;//元素为0,则进行下一轮判断
    14         if(flag%3==0){//数到3,退出游戏 
    15             a[i]=0;//该元素置值为0 
    16             q--;//总数 -1 
    17             flag=0;//重新计数 
    18         }
    19         if(q==1) {
    20             break;//只剩下一个元素时跳出循环 
    21         }
    22     }
    23     for(i=0;i<n;i++){//遍历数组,输出不为0的元素即为结果 
    24         if(a[i]!=0){
    25             printf("%d",a[i]);
    26         }
    27     }
    28     return 0;//程序结束 
    29 }
  • 相关阅读:
    Axios 请求/响应拦截器,用来添加 token 和 处理响应错误
    js判断图片url地址是否404
    JavaScript使用a标签下载文件
    页面刷新或离开页面给后端发送数据
    element 上传文件 upload
    element-ui 的 el-table,点击单元格可编辑
    黑盒测试用例设计方法普及【转载】
    因果图法的介绍与示例分析【转载】
    黑盒测试用例设计方法及适用场合-2018.3.17
    大数据测试要点--转载
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6567341.html
Copyright © 2011-2022 走看看