精华内容
下载资源
问答
  • 从第一个人开始1到3报),凡报到3的人退出圈子,问最后留下 的是原来几号的那位。  import java.util.Arrays; import java.util.Scanner; import net.mindview.util.Print; public class Test...

    【程序37】 

    题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下

    的是原来第几号的那位。 



    
    import java.util.Arrays;
    import java.util.Scanner;
    
    import net.mindview.util.Print;
    
    public class Test37 {
    
    	public static void main(String[] args) {
    		System.out.println("-------------'%'测试-------------");
    		System.out.println("'%' 可以制造出循环的效果:");
    		for (int i = 1; i < 10;i++ ) {
    			System.out.println(i%4);
    		}
    		System.out.println("-------------测试结束-------------");
    		System.out.println();
    		System.out.println();
    		System.out.println("-------------测试开始-------------");
    		for (int i = 5; i < 40;i++ ) {
    			findLast(i);
    		}
    		System.out.println("-------------测试结束-------------");
    		
    //		System.out.println("请输入人数:");
    //		Scanner s = new Scanner(System.in);
    //		int n = s.nextInt();
    //		findLast(n);
    
    	}
    
    	private static void findLast(int n) {
    		int[] arr = new int[n];
    		boolean[] people = new boolean[n];
    		Arrays.fill(people,true);
    		int i = 0,j = 0, k = 1, m = n;
    		for(;j<m; i = ++i%m ,k = ++k%4){
    			if(k==0){ //去除k=0的时候,只留下值为1,2,3的k,
    				i--; //因为k这时有四个数再循环,当k=0时,当前报数的重报,即下个for循环还是当前报数人
    				continue;
    			}
    			if(people[i]){
    				if(k%3 == 0){
    					arr[j]  = i+1;
    					j++;
    					n--;
    					people[i] = false;
    				}
    			}else{
    				k--;//如果已经将该人设置为false,则下个人还报当前这个k值,所以k--,与下个for循环的k++抵消
    			}
    		}
    		print(arr);
    	}
    
    	// 打印数组
    	public static void print(int[] arr) {
    		for (int i = 0; i < arr.length; i++) {
    			System.out.print(arr[i] + " ");
    		}
    		System.out.println();
    	}
    
    }
    
    输出结果:

    -------------'%'测试-------------
    '%' 可以制造出循环的效果:
    1
    2
    3
    0
    1
    2
    3
    0
    1
    -------------测试结束-------------
    
    
    -------------测试开始-------------
    3 1 5 2 4 
    3 6 4 2 5 1 
    3 6 2 7 5 1 4 
    3 6 1 5 2 8 4 7 
    3 6 9 4 8 5 2 7 1 
    3 6 9 2 7 1 8 5 10 4 
    3 6 9 1 5 10 4 11 8 2 7 
    3 6 9 12 4 8 1 7 2 11 5 10 
    3 6 9 12 2 7 11 4 10 5 1 8 13 
    3 6 9 12 1 5 10 14 7 13 8 4 11 2 
    3 6 9 12 15 4 8 13 2 10 1 11 7 14 5 
    3 6 9 12 15 2 7 11 16 5 13 4 14 10 1 8 
    3 6 9 12 15 1 5 10 14 2 8 16 7 17 13 4 11 
    3 6 9 12 15 18 4 8 13 17 5 11 1 10 2 16 7 14 
    3 6 9 12 15 18 2 7 11 16 1 8 14 4 13 5 19 10 17 
    3 6 9 12 15 18 1 5 10 14 19 4 11 17 7 16 8 2 13 20 
    3 6 9 12 15 18 21 4 8 13 17 1 7 14 20 10 19 11 5 16 2 
    3 6 9 12 15 18 21 2 7 11 16 20 4 10 17 1 13 22 14 8 19 5 
    3 6 9 12 15 18 21 1 5 10 14 19 23 7 13 20 4 16 2 17 11 22 8 
    3 6 9 12 15 18 21 24 4 8 13 17 22 2 10 16 23 7 19 5 20 14 1 11 
    3 6 9 12 15 18 21 24 2 7 11 16 20 25 5 13 19 1 10 22 8 23 17 4 14 
    3 6 9 12 15 18 21 24 1 5 10 14 19 23 2 8 16 22 4 13 25 11 26 20 7 17 
    3 6 9 12 15 18 21 24 27 4 8 13 17 22 26 5 11 19 25 7 16 1 14 2 23 10 20 
    3 6 9 12 15 18 21 24 27 2 7 11 16 20 25 1 8 14 22 28 10 19 4 17 5 26 13 23 
    3 6 9 12 15 18 21 24 27 1 5 10 14 19 23 28 4 11 17 25 2 13 22 7 20 8 29 16 26 
    3 6 9 12 15 18 21 24 27 30 4 8 13 17 22 26 1 7 14 20 28 5 16 25 10 23 11 2 19 29 
    3 6 9 12 15 18 21 24 27 30 2 7 11 16 20 25 29 4 10 17 23 31 8 19 28 13 26 14 5 22 1 
    3 6 9 12 15 18 21 24 27 30 1 5 10 14 19 23 28 32 7 13 20 26 2 11 22 31 16 29 17 8 25 4 
    3 6 9 12 15 18 21 24 27 30 33 4 8 13 17 22 26 31 2 10 16 23 29 5 14 25 1 19 32 20 11 28 7 
    3 6 9 12 15 18 21 24 27 30 33 2 7 11 16 20 25 29 34 5 13 19 26 32 8 17 28 4 22 1 23 14 31 10 
    3 6 9 12 15 18 21 24 27 30 33 1 5 10 14 19 23 28 32 2 8 16 22 29 35 11 20 31 7 25 4 26 17 34 13 
    3 6 9 12 15 18 21 24 27 30 33 36 4 8 13 17 22 26 31 35 5 11 19 25 32 2 14 23 34 10 28 7 29 20 1 16 
    3 6 9 12 15 18 21 24 27 30 33 36 2 7 11 16 20 25 29 34 1 8 14 22 28 35 5 17 26 37 13 31 10 32 23 4 19 
    3 6 9 12 15 18 21 24 27 30 33 36 1 5 10 14 19 23 28 32 37 4 11 17 25 31 38 8 20 29 2 16 34 13 35 26 7 22 
    3 6 9 12 15 18 21 24 27 30 33 36 39 4 8 13 17 22 26 31 35 1 7 14 20 28 34 2 11 23 32 5 19 37 16 38 29 10 25 
    -------------测试结束-------------
    






    展开全文
  • 从第1个人开始(1到3报),凡报到3的人退出圈子。下一开始继续报,直到剩下最后一人,游戏结束。  问最后留下的是原来几号的那位。  举例子,8个人围成一圈:  1 2 3 4 5 6 7 8  1次报...

    问题描述

    有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。
      问最后留下的是原来第几号的那位。
      举个例子,8个人围成一圈:
      1 2 3 4 5 6 7 8
      第1次报数之后,3退出,剩下:
      1 2 4 5 6 7 8 (现在从4开始报数)
      第2次报数之后,6退出,剩下:
      1 2 4 5 7 8 (现在从7开始报数)
      第3次报数之后,1退出,剩下:
      2 4 5 7 8 (现在从2开始报数)
      第4次报数之后,5退出,剩下:
      2 4 7 8 (现在从7开始报数)
      第5次报数之后,2退出,剩下:
      4 7 8 (现在从4开始报数)
      第6次报数之后,8退出,剩下:
      4 7 (现在从4开始报数)
      最后一次报数之后,4退出,剩下:
      7.
      所以,最后留下来的人编号是7。
    输入格式
      一个正整数n,(1<n<10000)
    输出格式
      一个正整数,最后留下来的那个人的编号。
    例子

    样例输入
    8
    样例输出
    7

    跟前几天写那个狡猾的老鼠那道题99%一样,代码放上了,就是巧妙的模拟就是了。

    #include <stdio.h>
    #define m 3
    int main ()
    {
    	int n,n1,step,i;
    	scanf("%d",&n);
    	int a[n];
    	for(i=0;i<n;i++)
    		a[i]=0;
    	n1=n;
    	i=0;
    	while(n1>1)
    	{
    		step=m;
    		while(1)
    		{
    			i++; 
    			if(i==n)
    				i=0;
    			if(a[i]==0)
    				step--;
    			if(step==0)
    				break;
    		 } 
    		a[i]=1;
    		n1--;
    	}
    	for(i=0;i<n;i++)
    	{
    		if(a[i]==0)
    			printf("%d\n",i);
    	}
    	return 0; 
    }
    

    在其他博主那看到另一种表达,也很不错呢:
    他的思路:定义一维数组, 数组下标表示人的编号, 值表示是否出局(1为出局), 先将数组元素全部初始化为0, 然后定义两个整型变量 num 表示人的编号和 count 其所报的数(i 在0~2循环, 0即表示报数为3,则出局),再定义一个整型变量left记录剩余人数, 剩余1人时退出循环。此人为胜者并输出其编号。

    #include <stdio.h>
    
    int main(){
        int a[10000] = {0};
        int sum;  //总人数 
        int num, count, left;
        scanf("%d", &sum);
        left = sum;
        for(num=0,count=1; ; num=(num+1)%sum){
            if(a[num] == 1)  //若此人出局则继续找下一位未出局的人 
                continue;
            if(count==0){   //若此人报数为 0 则此人出局 
                a[num] = 1;
                left--;
                if(left == 1)
                    break;
            }
            count=(count+1)%3;
        }
        for(num=0; num < sum; num++)  //在数组中找到唯一未出局的人 
            if(a[num]==0)break;
        printf("%d", num+1);
        return 0;
    }
    
    展开全文
  • java实现四届蓝桥杯幸运

    万次阅读 多人点赞 2019-07-29 16:55:17
    我们2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 … 把它们缩紧,重新记序,为: 1 3 5 7 9 … 。这时,3为2幸运,然后把所有能被3整除的序号位置的删去。注意,是序号位置...
     幸运数  
    

    题目描述
    幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。

    首先从1开始写出自然数1,2,3,4,5,6,…

    1 就是第一个幸运数。
    我们从2这个数开始。把所有序号能被2整除的项删除,变为:

    1 _ 3 _ 5 _ 7 _ 9 …

    把它们缩紧,重新记序,为:

    1 3 5 7 9 … 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, …

    此时7为第3个幸运数,然后再删去序号位置能被7整除的(19,39,…)

    最后剩下的序列类似:

    1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, …

    本题要求:

    输入两个正整数m n, 用空格分开 (m < n < 1000*1000)
    程序输出 位于m和n之间的幸运数的个数(不包含m和n)。

    例如:
    用户输入:
    1 20
    程序输出:
    5

    例如:
    用户输入:
    30 69
    程序输出:
    8

    资源约定:
    峰值内存消耗(含虚拟机) < 64M
    CPU消耗 < 2000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
    注意:主类的名字必须是:Main,否则按无效代码处理。

     
     
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
     
     
    public class Main1 {
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		int n=in.nextInt();
    		int m=in.nextInt();
    		n=trans(n)-1;
    		m=trans(m)-1;
    		System.out.println((m-n));
    		
    	}
     
    	private static int trans(int n) {
    		// TODO 自动生成的方法存根
    		if(n<3)return 2;
    		List<Integer> list=new ArrayList<Integer>();
    		for(int i=0;i<n;i++){
    			list.add(i);
    		}
    		int luck=1;
    		while(luck<n){
    			if(list.size()<=luck)break; 
    			int k;
    			if(luck==1)k=2;
    			else
    			    k=list.get(luck);
    			//System.out.print(k+"*");
    			for(int i=list.size()-1;i>=k;i--){
    				if(i%k==0)
    					list.remove(i);
    			}
    			
    			//System.out.println();
    			luck++;
    		}
    //		for(int i=2;i<luck;i++){
    //			System.out.print((list.get(i)-list.get(i-1))+" ");
    //		}
    //		System.out.println();
    		
    //		System.out.println("**"+luck);
    		return luck;
    	}
     
    }
    
    展开全文
  • N智慧

    千次阅读 2018-12-26 22:12:45
    正整数如果能表示成了两正整数的平方差,则称这个数为“智慧数”,比如16就等于5的平方减去3的平方,所以16就是一智慧1开始的自然数列中,将“智慧数”从小到大编号为1,2,3,„„,n。现输入一正...

    一个正整数如果能表示成了两个正整数的平方差,则称这个数为“智慧数”,比如16就等于5的平方减去3的平方,所以16就是一个智慧数,从1开始的自然数列中,将“智慧数”从小到大编号为1,2,3,„„,n。现输入一个正整数n,输出第n个“智慧数”。

    输入
    仅包含一个正整数 n(1≤n≤100)。

    输出
    仅包含一个正整数,表示编号为 n 的智慧数。
    样例输入
    复制样例数据
    3
    样例输出
    7

    直接打表

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int a[100005];
    int main()
    {
    	int i,j;
    	int k=0;
    	for(i=2;i<=250;i++){
    		for(j=i-1;j>=1;j--)
    			a[k++]=i*i-j*j;
    	}
    	sort(a,a+k);
    	for(i=0;i<k;i++){
    		printf("%d\n",a[i]);
    	}
    	return 0;
    }
    

    代码

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int a[150]={3,5,7,8,9,11,12,13,15,16,
                17 ,19,20,21,23,24,25,27,28,29,31,32,
                33,35,36,37,39,40,41,43,44,45,47,48,49,
                51,52,53,55,56,57,59,60,61,63,64,65,67,
    			68,69,71,72,73,75,76,77,79,80,81,83,84,85,
                87,88,89,91,92,93,95,96,97,99,100,101,103,
                104,105,107,108,109,111,112,113,115,116,117,119,
    			120,121,123,124,125,127,128,129,131,132,133,135,136,137,
                139,140,141,143,144,145,147,148,149,151,152,153,155,156,
    			157,159,160};
    int main()
    {
    	int n;
    	cin>>n;
    	cout<<a[n-1]<<endl;
    	return 0;
    }
    
    展开全文
  • 小算法:n个人围成一圈,从第一个人开始,报到3的倍数的退出,一直到剩下最后一人 http://www.cnblogs.com/notwin/archive/2009/09/16/1567631.html 1 DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 ...
  • package org.bluebridge.topics; /* * 幸运 幸运是波兰数学家乌拉姆命名的。... 我们2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把它们缩紧,重新记序,为: 1 3 5 7 9 ...
  • 这是昨天的面试时遇到的一道编程题,20分,没做出来,bz比较笨,回来在网上看了许多答案,感觉下面的这还可以,就拿过来为大家分享一下。 import java.util.Scanner; public class Test { public static void ...
  • 幸运 算法比赛

    千次阅读 2014-03-21 13:32:34
    我们2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把它们缩紧,重新记序,为: 1 3 5 7 9 .... 。这时,3为2幸运,然后把所有能被3整除的序号位置的删去。注
  • 数列从第三项开始,每一项都等于前两项之和。 对斐波那契有了简单的了解之后,我们开始写一简单的递归: #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int fib(int n) { if(n&...
  • 如何开始写一操作系统?

    万次阅读 多人点赞 2019-08-20 18:17:55
    如何开始写一简单的操作系统? 关注问题 写回答 操作系统 编程学习 如何开始写一简单的操作系统? 看了这开始写一简单的操作系统 求指教。 关注者 4,787 被浏览 352,884 关注问题 ...
  • 在一数组中找到k小的(线性时间选择)

    千次阅读 多人点赞 2019-01-18 02:16:59
    在一数组中找到k小的(线性时间选择) 在这一部分,我们讨论的题目为元素选择问题。这类题目的一般问法为:给定线性序集中n元素和一整数k,1 <= K <= n,要求找出这n元素中k小的元素,如(1,4...
  • 幸运 - 四届蓝桥杯java B组

    千次阅读 2013-05-21 13:56:46
    标题:幸运  幸运是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法... 我们2这个数开始。把所有序号能被2整除的项删除,变为:  1 _ 3 _ 5 _ 7 _ 9 ....  把它们缩紧,重新记序,为:
  • ip段/数字,如192.168.0.1/24是什么意思?

    万次阅读 多人点赞 2014-09-19 12:17:24
    ip段/数字,如192.168.0.1/24是什么意思? 首先来了解一下二进制的...转化成十进制要右到左用二进制的每个数去乘以2的相应次方 不过次方要0开始 相反 用十进制的13除以2 每除一下将余数就记在旁边 最后按余数
  • 前言: 今天搞了一天这 蒙格马利 什么的,...判断一个数是否是质数? 解题思路: 一开始我想的方法就是用For循环一判断,后来看资料说这是最笨的方法,好吧,我得承认我数学太渣 下面开始介绍点要用到的知
  • 判断一个数是否是素数 1.判断一个数是否是素数 #include<stdio.h> #include<math.h> int main() { int n, i, k; printf("please enter a integer number"); scanf_s("%d", &n); k = sqrt(n...
  • Java实现 蓝桥杯 历届试题幸运

    万次阅读 多人点赞 2019-07-26 22:08:29
    我们2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 … 把它们缩紧,重新记序,为: 1 3 5 7 9 … 。这时,3为2幸运,然后把所有能被3整除的序号位置的删去。注意,是序号位置,...
  • 这道题非常简单,只需要使用一简单的递归即可得到结果: 规律为从第个数开始: F(n) = F(n-1) + F(n-2) C#代码: public int Foo(int n) { if (n == 0) { return 1; } ...
  • 核心层:数字经济发展的底层建筑核心层的范畴及其经济含义宏观视角看,核心层是支撑数字经济发展的底层建筑。这基座主要包括(1)体、 (2)信息技术(IT)、(3)通信技术、(4)智能硬件...
  • 时间限制:1.0s 内存限制:256.0MB 问题描述 幸运是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。...我们2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 ...
  • 背景知识IP地址IP地址被用来给Internet上的电脑一编号。大家日常见到的情况是每台联网的PC上...IP地址是一32位的二进制,通常被分割为48位二进制”(也就是4字节)。IP地址通常用“点分十进制”表示成(a
  • 开始学习Linux笔记

    万次阅读 多人点赞 2020-05-15 19:12:14
    开始学习Linux,记录笔记,担心自己以后会忘,也供大家茶余饭后,闲来无事看看,自己的理解只能到这,也希望大家可以指出我的错误 让我可以有一点点进步,以后会一直更新
  • 问题:A2到99之间抽了2数字,把和告诉B,积告诉CB说我不知道这2个数,但是C也肯定不知道C说我开始确实不知道,但是现在知道了B说这样我也知道了求这2个数.为什么? 我的解答:首先,正确答案是4和13。设B得到的和记...
  • 幸运

    千次阅读 2019-03-07 13:40:40
    1. 问题描述: ...我们2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把它们缩紧,重新记序,为: 1 3 5 7 9 .... 。这时,3为2幸运,然后把所有能被3整除的序号...
  • 此题是百度公司2012年的一道面试题:有20数组,每数组里面有500个数,升序排列,求出这10000数字中最大的500...因此,我们可以数组中取各自数组中的最大,由此,得到一数组,该数组中的元素有20。接
  • 有趣的

    千次阅读 2014-09-20 23:55:36
    1.定义】一整数,它的各位数字如果是左右对称的,则称这个数是对称。 例如:1234321、123321等。 一般来说,位数大于或等于两位。最小的对称是11,没有最大的对称,因为位是无穷的。 【分类】...
  • 具体来说,我们将以分析历史股价为例,介绍怎样文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数。这里还将学习读写文件的方法,并尝试函数式编程和NumPy线性代数运算。 三章 常用函数 3.9 统计分析 ...
  •  编程题:设有N个人依次围成一圈,从第1个人开始M个人出列,然后出列的下一开始M个人又出列,...,如此反复到所有的人全部出列为止,设N个人的编号分别为1,2,...,N,打印出出列的顺序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 196,924
精华内容 78,769
关键字:

从37开始数起第八个数是