WUSTOJ 1251: 报数游戏(Java)
1251: 报数游戏
Description
n个人站成一行玩一个报数游戏。所有人从左到右编号为1到n。游戏开始时,最左边的人报1,他右边的人报2,编号为3的人报3,等等。当编号为n的人(即最右边的人)报完n之后,轮到他左边的人(即编号为n-1的人)报n+1,然后编号为n-2的人报n+2,以此类推。当最左边的人再次报数之后,报数方向又变成从左到右,依次类推。
为了防止游戏太无聊,报数时有一个特例:如果应该报的数包含数字7或者是7的倍数,他应当用拍手代替报数。下表是n=4的报数情况(X表示拍手)。当编号为3的人第4次拍手的时候,他实际上数到了35。
给定n,m和k,你的任务是计算当编号为m的人第k次拍手时,他实际上数到了几。

Input
输入包含不超过10组数据。每组数据占一行,包含三个整数n,m和k(2<=n<=100, 1<=m<=n, 1<=k<=100)。输入结束标志为n=m=k=0。
Output
对于每组数据,输出一行,即编号为m的人第k次拍手时,他实际上数到的那个整数。
Sample Input
4 3 1
4 3 2
4 3 3
4 3 4
0 0 0
Sample Output
17
21
27
35
Analyse
用两个变量分别表示报的数和当前报数的人的编号,判断报数的人的编号是不是m,如果是m,判断当前数是否是7的倍数或者包含数字7,如果满足条件,第m个人拍手次数加1,如果拍手次数和k相同,此时的报数就是结果。
输入0 0 0程序结束。
Code
import java.util.Scanner;
public class Main {
private Scanner sc;
private int n; // 人数
private int m; // 编号为m的人
private int k; // 拍手次数
// 从1开始
private int numberOfPersons; // 正在报数人的编号
private int currentNumber; // 正在报的数
private int currentTimes; // 第m个人已经拍手的次数
public Main() {
sc = new Scanner(System.in);
while (sc.hasNext()) {
// 输入数据
n = sc.nextInt();
m = sc.nextInt();
k = sc.nextInt();
// 三个全为0,退出
if (0 == n && 0 == m && 0 == k) {
break;
}
count(); // 统计结果
System.out.println(currentNumber);
}
sc.close();
}
private void count() {
// 初始化三个数都为0
numberOfPersons = 0;
currentNumber = 0;
currentTimes = 0;
// 初始时向右报数
int flag = 1;
// 已经拍手次数小于要求拍手次数
while (currentTimes < k) {
// 报数报到了最右边
if (numberOfPersons >= n) {
flag = -1;
}
// 报数报到了最左边
if (numberOfPersons <= 1) {
flag = 1;
}
// 报数加1或减1
numberOfPersons += flag;
// 报的数加1
currentNumber++;
// 轮到第m个人报数了
if (numberOfPersons == m) {
// 第m个人报的数是7的倍数,或者包含数字7
if (0 == currentNumber % 7 ||
String.valueOf(currentNumber).contains("7")) {
// 拍手数加1
currentTimes++;
}
}
}
}
public static void main(String[] args) {
new Main();
}
}
End
WUSTOJ 1251: 报数游戏(Java)的更多相关文章
- 编写Java程序,利用List实现报数游戏的实现思路
返回本章节 返回作业目录 需求说明: 利用List实现报数游戏 在控制台输入一个大于3的正整数,该整数表示有多少人,如在控制台输入10,表示有10个人,10个人围成一个圆圈,从序号1开始为这些人依次编 ...
- java实现报数游戏
报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止.问剩下第几个孩子.下面的程序以10个孩子为例,模拟了这个过程,请完善之(提 ...
- WUSTOJ 1285: Factors(Java)
1285: Factors 参考 hadis_fukan的博客--wustoj 1285 Factors 题目 输入一个数n,找出1~n之间(包括1,n)的质因子最多的数(x)的质因子个数(f ...
- 适合刚刚学习编程的萌新:C语言编程学习制作超简单又好玩的报数游戏!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 算法笔记_179:历届试题 数字游戏(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 栋栋正在和同学们玩一个数字游戏. 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要 ...
- 俄罗斯方块游戏 --- java
俄罗斯方块游戏 如有疑问请查看:http://zh.wikipedia.org/zh-tw/%E4%BF%84%E7%BD%97%E6%96%AF%E6%96%B9%E5%9D%97 更多疑问请参考: ...
- 生命游戏 Java
本程序由四个类组成:其中Init_data,用于初始化各个活细胞的状态judge_state,用于判断下一代的细胞状态,并进行更新.set_color,用于给GUI界面中各个细胞涂色set_frame ...
- 猜字游戏java
一.实践目的 1.掌握基本输入输出. 2.掌握方法定义与调用,理解参数传递方式. 3.掌握数组的声明.定义与初始化,数组的处理. 4.掌握数组作为方法参数和返回值. 二.实践要求 利用方法.数组.基本 ...
- 人机猜拳游戏Java
作业要求: 我的代码: package day20181119;/** * 猜拳游戏 * @author Administrator * @version1.0 */import java.util. ...
随机推荐
- [GitHub]纪华裕的GitHub收藏
由于GitHub的star没有分类功能在此写下我的收藏. JS nodenodejs的仓库 puppeteer一个用户测试的无头浏览器 moment日期操作库,包括格式化等
- 002-创建型-00-简单工厂【非23种GOF设计模式】
一.概述 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实 ...
- MauiMETA工具的使用(一)
MauiMETA工具的使用(一) 摘自:https://www.jianshu.com/p/a377119947f8 tianxiaoMCU 关注 2018.12.21 14:15 字数 267 ...
- sed替换 - 含反斜杠(/)和Shell变量
sed替换 - 含反斜杠(/)和Shell变量 摘自: https://blog.csdn.net/zhenyongyuan123/article/details/6616263 2011年07月19 ...
- Spring走向注解驱动编程
SpringFramework的两大核心,IOC(Inversion of control)控制反转和DI(Dependency Inject)依赖注入,其推崇的理念是应用系统不应以java代码的方式 ...
- 关于Selenium remote模式分布式执行UI自动化测试必定面临的性能问题
1.大部分自动化测试人员都是在本地执行UI自动化测试,也就是代码和浏览器必须在同一台机器上,这样的的缺陷很多,无法多任务并发执行UI自动化测试用例,效率极低 2.正是如此,Selenium 的remo ...
- shutter 安装和设置快捷键
1. 打开系统设置 2. 打开 Keyboard 键盘设置 3. 添加成功的状态 4. 单击右侧 Disabled,然后快速按下 Ctrl+Alt+A 如下图 5. Ctrl+Alt+A 测试OK. ...
- 整理Vue.js 面试题
Vue.js 面试题整理 Vue项目结构介绍 build 文件夹:用于存放 webpack 相关配置和脚本. config 文件夹:主要存放配置文件,比如配置开发环境的端口号.开启热加载或开启gz ...
- javascript DOM和DOM操作的四种基本方法
在了解了javascript的语言特性后,javascript真正大放光彩的地方来了——这就是javascript DOM Javascript DOM DOM(Document Object Mod ...
- 排序算法的实现之Javascript(常用)
排序算法的实现之Javascript 话不多说,直接代码. 1.冒泡排序 1.依次比较相邻的两个数,如果前一个比后一个大,则交换两者的位置,否则位置不变 2.按照第一步的方法重复操作前length-1 ...