CCF历届真题之游戏(_1712_2_Game.java)

CCF历届真题之游戏(_1712_2_Game.java)

问题描述:

试题编号: 201712-2
试题名称: 游戏
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  有 n个小朋友围成一圈玩游戏,小朋友从1至 n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在 n号小朋友的顺时针方向。
  游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为 k的倍数或其末位数(即数的个位)为 k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。
  例如,当n=5, k=2时:
  1号小朋友报数1;
  2号小朋友报数2淘汰;
  3号小朋友报数3;
  4号小朋友报数4淘汰;
  5号小朋友报数5;
  1号小朋友报数6淘汰;
  3号小朋友报数7;
  5号小朋友报数8淘汰;
  3号小朋友获胜。

  给定 nk,请问最后获胜的小朋友编号为多少?
输入格式
  输入一行,包括两个整数 nk,意义如题目所述。
输出格式
  输出一行,包含一个整数,表示获胜的小朋友编号。
样例输入
5 2
样例输出
3
样例输入
7 3
样例输出
4
数据规模和约定
  对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。

参考代码:

package com.test;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 
 * @Author: Dina
 * @Time: 2018年1月13日 
 * @Description:游戏
 * @Score: 100分
 */
public class _1712_2_Game {

	public static void main(String[] args) {	
		Scanner src=new Scanner(System.in);
		int n=src.nextInt();
		int k=src.nextInt();
		int yu=0 ,j=0;		
		ArrayList list = new ArrayList();		
		for (int i = 1; i < n+1; i++) {
			list.add(i);
		}		
		for (int i = 0; i < list.size(); i++) {		
			j=i+1;
			
			while(j>10){	//处理报的数大于10的数		
				yu=j%10;
				j=yu;
			}
			j=i+1;
			//报的数不为k的倍数且其末位数(即数的个位)不为k,则该小朋友不被淘汰出局,继续参加以后的报数
			if((j%k!=0)&&(yu!=k)&&(j!=k)){
				list.add(list.get(i));
			}				
		}		
		System.out.println(list.get(list.size()-1));
		src.close();
	}
}


提交可通过:


你可能感兴趣的:(CCF历年真题,java)