【狼追兔纸】

题目描述

题目是:在一个有N个环形洞中,兔子躲进其中一个,狼先到第一个,没有找到,然后第三个,也没有找到,再到第六个,第十个.....以此类推,每次在前面的基础上加一个,最终狼没追到兔子.问兔子可能在那个洞里?

输入

输入N 其中 1<=n<=100

输出

输出狼找不到的洞的编号,每个号码占一行

样例输入

10

样例输出

2
4
7
9

提示

解题思路基本就按题目说的来;每次加1,就是1,3,6,10。。。

终止条件就是当再次从起点1位置开始的时候,就是终止条件了,也就是说,当狼第二次到起点开始继续找兔纸,重复从位置一开始的动作的时候,即可终止循环;

因此,需要每次开始的位置判断是否是位置1,而且经过两次;

import java.util.*;
public class A1091 {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();int[] ar=new int[n+1];
        int sum=0;
        for(int i=1;;i++) {
            sum+=i;
            int t=sum%n;//获取在哪个位置
            if(t==1&&ar[t]>=2) {//判断是否第二次在1位置上
                break;
            }else if(t==0&&sum==n) {//处理终止位置与n的相同问题,(处理当n=sum,取余就会变0)
                ar[n]++;
            }else {
                ar[t]++;
            }
        }
        for(int i=1;i<n;i++) {
            if(ar[i]==0) {
                System.out.println(i);
            }
        }
    }

}
原文地址:https://www.cnblogs.com/RorinL/p/12926474.html