题解 1160: 出圈

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

编写题解 1160: 出圈(队列)

摘要:解题思路:把m-1个数加到后面之后,删除第一个数即可注意事项:参考代码:while True:    try:        n,m = map(int,input().split())       ……

出圈:重点是怎么在反复遍历一个圈时确定下标问题

解题思路:本题可以将所有的人从1到m设置好序号,然后放到列表里面,序号存在表示该人尚未出圈,每次遍历时index更新为(index+(m-1))%len(c),保证下标在超过范围时能够正确判断,每一次都进行判断删除直到列表长度为1时停止,此时列表中的唯一的序号c[0]就是所求的最后一个人的初始编号注意

简单数组算法

摘要:解题思路:注意事项:参考代码:int main() { int m, n; while (scanf("%d%d", &n, &m) != EOF) { int a[100]; ……

连续输入用重复执行解决

摘要:解题思路:模板给的开头和结尾还是很有用的遇到连续输入还好是还是要尽量用一下while true:try:except:break挺好用注意事项:参考代码:while True:    try:    ……

1160————出圈

importjava.util.Scanner;importjava.util.LinkedList;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(scanne

学生能看懂的c++语言

解题思路:难点在于如何用计算机模拟人一次次选的过程.有n个人,我们就定义一个长度为n个的数组a[n]不妨将m个元素赋1,其他元素初始化0。用一个for循环一次次地访问这个数组,当m次时,将a[i]赋0.最后一个时,数组所有元素的和为1,再找出最后的那个元素即可。

一个初学者的简单思路--出圈

解题思路:我们设置一个计数的count,如果说一共有n个人,把一个数组的前n项均设为1,那么count在遍历的时候可以把每一项值相加,如果count=m,则说明此位置的人出圈,这时我们把count再设为0,把此位置元素设为0,于是当count再遍历这个地方的时候会加0,相当于没有对此计数。