问题描述

有一只狡猾的老鼠,在一个环形的田埂上挖了n个老鼠洞,这些洞也是连接为一个环状,我们要用泥土填满这些鼠洞,老鼠从第0号洞开始出现(第0号洞不填),然后依次按每间隔m个洞出现一次。我们要跟在老鼠后面,当老鼠出现后填补上刚刚出现的洞。我们需要计算出老鼠最后出现那个洞(即剩下最后一个洞没有被我们填上时,这个洞的序号)。
输入

输入的第一行为了两个整数n(n<=300000)、m,n表示一共有n个老鼠洞,m表示老鼠每隔m个洞出现。
输出

输出老鼠最后出现的那个洞的序号。
样例

样例输入
5 2
8 3
样例输出
3
7
提示

第一个测试数据5 2的填洞顺序:2,4,1,0
第二个测试数据8 3的填洞顺序:3,6,1,5 ,2,0,4

问题变形:约瑟夫环问题

思路

用外层while 循环遍历所有的洞,在每次while循环里设置一个内层while循环,内层循环用来走一次m步,并将堵住的洞标记,最后只需要输出那个没被标记的洞的号数即可。

#include<stdio.h>int main()
{int n,m,n1,i=0,step;scanf("%d %d",&n,&m);int s[n];for(int j=0;j<n;j++){s[j]=0;}n1=n;while(n1>1) //确保还剩一个洞未进 {step=m;while(1) //老鼠向前走一步 {i++;if(i>=n) //循环遍历这些洞 {i=0;}if(s[i]==0){step--;}if(step<=0){break;}}s[i]=1;n1--;}for(int k=0;k<n;k++){if(s[k]==0){printf("%d\n",k);}}return 0;
}

运行示例

狡猾的老鼠 -有一只狡猾的老鼠,在一个环形的田埂上挖了n个老鼠洞,这些洞也是连接为一个环状,我们要用泥土填满这些鼠洞,老鼠从第0号洞开始出现(第0号洞不填),然后依次按每间隔m个洞出现一次。我们要跟在相关推荐

  1. 消灭老鼠 有一只老鼠,在一个环形的田埂上挖了n个老鼠洞,这些洞也是连接为一个环状,我们要用泥土填满这些鼠洞,老鼠从第0号洞开始出现(第0号洞不填),然后依次按每间隔m个洞出现一次。我们要跟在老鼠后

    源代码#include<stdio.h> int main() {     int n,m,n1,i=0,step;     scanf("%d %d",&n, ...

  2. 狡猾的老鼠-循环C语言,狡猾的老鼠

    内容简介:前几天,我家来了一位 "小客人".它灰色的身体,小小的身子,圆溜溜的大眼睛,一条长长的尾巴.. 本文<狡猾的老鼠>由小学生作文大全整理,仅供参考.如果觉得很不 ...

  3. Java黑皮书课后题第8章:*8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了

    *8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1.让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了 题目 题目描述与运行示例 破题 代码 题目 题 ...

  4. Java黑皮书课后题第8章:*8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1

    *8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1 题目 题目描述 破题 代码 题目 题目描述 8.22(偶数个1)编写一个程序,产 ...

  5. Oracle 11.2.0.1 升级到 11.2.0.3 示例

    Oracle 11.2.0.1 单实例升级到11.2.0.3. Oracle 升级的步骤都差不多. 先升级Oracle software,然后升级Oracle instance. Oracle 11. ...

  6. (转载)你好,C++(17)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符

    你好,C++(17)0.1*10不等于1.0--4.1.4 关系操作符4.1.5 逻辑操作符 4.1.4  关系操作符 在C++中,除了需要用算术操作符对数据进行加减乘除的算术操作之外,我们有时候还需 ...

  7. Redhat 5.4 Orcle RAC 数据库 从10.2.0.1升级到 10.2.0.4

    之前安装的是两个节点的RAC 平台. 数据库版本是10.2.0.1. 这个实验的目的就是将这个数据库版本从10.2.0.1 升级到 10.2.0.4.  升级包可以从Oracle metalink上进 ...

  8. 背包问题_(DP经典),一,(01背包,填满背包)

    背包系列已更新 一,(01背包,填满背包) 二,(多重背包) 三,(完全背包) 目录 一,01背包(对于一个物品,你要么全拿,要么不拿) 核心dp方程,dp[i][j]=max(dp[i-1][j], ...

  9. 让图片填满Word表格里的单元格

    (1)情况:让图片充満Word里的表格的单元格(如下图). ‍ (2)方法: ①选中整个表格[也可以只选中某单元格].执行:表格属性--"表格"选项卡--"选项" ...

最新文章

  1. MySQL—04—MySQL的其他对象
  2. 如何用代码的方式取出SAP C4C销售订单创建后所有业务伙伴的数据
  3. 不使用第三个变量交换两个变量的值
  4. 拿到两封信,开心ING
  5. Vue全家桶实战02_【从入门到放弃系列】
  6. 一位经验丰富的程序员如何建立网络初创企业?
  7. 多线程-threading和进程VS线程(python 版)
  8. android 百度转码,移动端禁止百度自动转码的方法
  9. 系统—怎么关闭windows自带的安全中心
  10. android 自定义剪裁,Android自定义View实现照片裁剪框与照片裁剪功能
  11. Flink SQL xxx is not serializable. The object probably contains or references non serializable field
  12. Vue项目启动时卡在98% after emitting CopyPlugin
  13. 企业招聘面试的经典6类问题
  14. Easyexcel 获取表格具体位置的内容
  15. 墙裂推荐,2023年最强、最实用的IDEA插件推荐合集
  16. Tensorflow slim库
  17. echarts省份地图
  18. 2020 AAAI-GMAN: A Graph Multi‐Attention Network for Traffic Prediction阅读笔记(翻译)
  19. FairFuzz 论文简读+源码分析+整体流程简述
  20. dmesgprintk的工作原理

热门文章

  1. 立创EDA使用记录——使用技巧和问题记录
  2. 成功之路散文连载之伪君子岳不群
  3. FileZilla 使用教程
  4. 关爱青少年作品,灯塔
  5. 软件工程复习——第4章
  6. 【数据链路层】广播信道 碰撞检测CSMA 争用期
  7. SQL Server 2000 安装时出现 以前的某个程序安装已经在计算机上创建挂起的文件操作
  8. unity接入quick sdk报错总结(Andriod第二版)
  9. 树莓派安装操作系统-raspbian的方法
  10. networkx读取gml图文件