• 【2007】聪明的兔子


    Time Limit: 3 second
    Memory Limit: 2 MB

    聪明的兔子:围绕着山顶有10个洞,一只狐狸和一只兔子各住一个洞。狐狸总想吃掉兔子。一天兔子对狐狸说:“你想吃我有一个条件,先把洞从1~10编上号,你从10号洞出发,先到1号洞找我;第二次隔1个洞找我,第三次隔2个洞找我,以后依此类推,次数不限。若能找到我,你就可以饱餐一顿。不过在没有找到我以前不能停下来。”狐狸满口答应就开始找了,它从早到晚找了1000次洞,累得昏了过去也没有找到兔子。请问,免子躲在几号洞里?

    Input

    输入文件中只一个数字,表示狐狸查找洞的次数(20<=n<=32767)。

    Output

    输出兔子躲藏的洞号

    Sample Input

    1000
    

    Sample Output

    2 4 7 9

    【题解】

    要注意这10个洞是构成了一个环。然后一个个洞for就可以了。3s的时间足够了。。

    【代码】

    #include <cstdio>
    
    const int MAXN = 10;
    
    int n;
    bool bo[10+10];
    
    void input_data()
    {
    	for (int i = 1;i <= 10;i++) //先初始化 每个洞都可以 
    		bo[i] = true;
        scanf("%d",&n);
    }
    
    void get_ans()
    {
    	int j = 1,k = 0;
    	bo[1] = false;
        for (int i = 1;i <= n-1;i++) //k用来表示隔几个洞 
    	    {
    	    	k++;
    			for (int m = 1;m <= k+1;m++)
    				{
    					j++; //一个个加 大于10就变成1 这样做比较方便。简单。 
    					if (j > 10 ) j = 1;
    				}
    			bo[j] = false; //这个洞口置为false 
    		}
    }
    
    void output_ans()
    {
    	int number = 0,a[MAXN+10];	
    	for (int i = 1;i <= 10;i++)//先把洞口的数目统计出来 然后再一个个输出这样最后就不会输出空格 
    		if (bo[i])
    			a[++number] = i;
    	for (int i = 1;i <= number-1;i++)
    		printf("%d ",a[i]);
    	printf("%d",a[number]);
    }
    
    int main()
    {
        input_data();
        get_ans();
        output_ans();
        return 0;	
    }
    


     

  • 相关阅读:
    Unix环境编程常用头文件
    《APUE》读书笔记—第十章信号(上)
    Unix网络编程API
    管道和FIFO
    《APUE》读书笔记—第九章进程关系
    开通博客园
    《APUE》读书笔记—第五章标准I/O库
    《APUE》读书笔记—第十章信号(中)
    《APUE》读书笔记—第三章文件I/O
    《APUE》读书笔记—第七章进程环境
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632490.html
Copyright © 2020-2023  润新知