CCF CSP 201712-2 游戏 java
2018-03-14 21:11
501 查看
试题编号: | 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号小朋友获胜。 给定n和k,请问最后获胜的小朋友编号为多少?输入格式 输入一行,包括两个整数n和k,意义如题目所述。输出格式 输出一行,包含一个整数,表示获胜的小朋友编号。样例输入5 2样例输出3样例输入7 3样例输出4数据规模和约定 对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。 |
但是需要注意的是在使用Iterator.remove()这个函数之前需要先判断ar这个数组的大小,如果是1,就需要退出循环了,虽然没找到具体的实例来验证,我在这卡了很久,一直是90分,修改了那个判断条件(代码中用红色标出部分)之后猜得到了满分。
java代码:
import java.util.ArrayList; import java.util.Iterator; import java.util.Map.Entry; import java.util.Scanner; //存储结构:hashMap public class _22{ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sin=new Scanner(System.in); int n=sin.nextInt(); int k=sin.nextInt(); ArrayList<Integer> ar=new ArrayList(); for(int i=1;i<=n;i++) { ar.add(i); } int num=1; Iterator<Integer> it=ar.iterator(); while(ar.size()>1) { while(it.hasNext()) { Integer en=it.next(); if(num%k==0||num%10==k)//判断是不是的k的倍数或者个位数是不是k { if(ar.size()==1) { break; } it.remove(); } num++; } it=ar.iterator(); } int out=ar.iterator().next();//输出结果 System.out.println(out); } }
相关文章推荐
- CCF CSP 201712-2 游戏(Java-100分)
- CCF 201712-2 游戏(Java)
- 【CCF-CSP 201712-2】游戏
- CCF CSP 201712-2:游戏
- CCF CSP认证 201512-2 消除类游戏 java版 70分,求助!
- 【CCF-CSP 201712-2】游戏
- 【CCF-CSP 201712-2】游戏
- 【CCF-CSP 201712-2】游戏
- 【CCF-CSP 201712-2】游戏
- 【CCF-CSP 201712-2】游戏
- 游戏 CCF CSP 201712-2
- 【CCF-CSP 201712-2】游戏
- 【CCF-CSP 201712-2】游戏
- CCF CSP 201512-2 消除类游戏(Java-100分)
- 【CCF-CSP 201712-2】游戏
- CCF CSP 201712-1 最小差值(Java-100分)
- 【CCF-CSP 201712-2】游戏
- CCF CSP 权限查询 JAVA 201612-3
- CCF-CSP 游戏
- 【CCF-CSP-201712-1】最小差值