蓝桥杯猴子分香蕉_蓝桥杯少儿编程大赛试题

蓝桥杯猴子分香蕉_蓝桥杯少儿编程大赛试题packageexec;importjava.util.Scanner;/**问题描述  秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

package exec;

import java.util.Scanner;

/** 
问题描述
  秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果。第二天,这些猴子来到山洞,把剩下的苹果分成n分,巧了,还是剩下了m个。问,原来这些猴子至少采了多少个苹果。
输入格式
  两个整数,n m
输出格式
  一个整数,表示原来苹果的数目
样例输入
5 1
样例输出
15621
数据规模和约定
  0<m<n<9 
 * @author Vivinia 
 * 
 */  
public class Apple {  
   
    public static void main(String args[]) {  
    	Scanner input=new Scanner(System.in);
    	int n=input.nextInt();
    	int m=input.nextInt();
    	input.close();
    	int  p, t, sum;  
        t = n+1;     //t需要循环的次数,因为虽然n个猴子,平分后吃掉m个一个n次,但是第二天还有一次,所以一共有n+1次
        p = 1;  
        while(t -- > 0)  
            p *= n;  
        sum   = p - ((n - 1 ) * m);  
        System.out.println(sum);  
    }
}  

今天才知道这是李政道教授1979年在中国科技大学少年班提出的一个问题,用普通暴力解法很耗时,所以教授找到了一个规律:

原题:
有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第2,3,4,5只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成5份.问这堆桃子至少有多少只

思路:
5的5次方+1-5=3121    
先给这些猴子4个桃子,    
第1只猴子多了4个桃子正好分成五份,拿走自己的部分(一堆多1个,给他的4个桃子留给第二个猴子);    
第2只猴子多了4个桃子正好分成五份,拿走自己的部分(一堆多1个,给他的4个桃子留给第三个猴子);    
………………………………    
第5只猴子多了4个桃子正好分成五份,拿走自己的部分(一堆多1个,给他的4个桃子留给第6个猴子);    
………………………..    
这就是说,有了这4个桃子,每次猴子都可以平均分成5份,可见,原来的总数必须是5的5次方的倍数,即3125,所以原来有3121个。

得出公式: x  =  (n ^ n+1) – ((n – 1) * m)                     (x是桃子总数,n是猴子个数,即分的次数,m是每次平分多的个数)

一开始我用的是比较容易理解的暴力激活成功教程,但是数据大了会超时:

package exec;

import java.util.Scanner;

/** 
问题描述
  秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果。第二天,这些猴子来到山洞,把剩下的苹果分成n分,巧了,还是剩下了m个。问,原来这些猴子至少采了多少个苹果。
输入格式
  两个整数,n m
输出格式
  一个整数,表示原来苹果的数目
样例输入
5 1
样例输出
15621
数据规模和约定
  0<m<n<9
 * @author Vivinia 
 * 
 */  
public class Apple {  
   
    public static void main(String args[]) {  
    	Scanner input=new Scanner(System.in);
    	int n=input.nextInt();
    	int m=input.nextInt();
    	input.close();
    	double countPeach;    //桃子总数  
    	int peach;    //问原来最少有多少个桃子,桃子越多,猴子分的越多,既然求最少,所以从最后一只只猴子拿的开始计算,从小遍历,并且要求在每次分配时,桃子总数减1除以5必须整除  
        for(peach=0;;peach++) {      //最后一只猴子拿走后剩下的个数  
            countPeach=peach;            //countPeach一开始默认为最后一只猴子拿走后剩下的桃子,本次剩余的桃子*n/(n-1)等=拿走前的桃子,再+1=上一只猴子拿走后剩下的桃子,以此循环  
            for(int i=0;i<=n;i++) {           //作为循环次数,共几只猴子拿桃子,所以循环几次  
                countPeach=countPeach*n/(n-1)+m;  
            }  
            if(countPeach==(int)countPeach)       //循环结束后,判断是否为整除,如果不是整除,强制类型转换后结果不相等  
                break;          //如果相等代表符合要求,break跳出循环  
        }  
        System.out.println((int)countPeach);  
    }  
}  

因为之前做的是桃子,所以代码和注释就还是写桃子了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183264.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows查看占用端口并关闭端口

    windows查看占用端口并关闭端口1.查看占用端口的进程IDnetstat-aon|findstr"12345"2.查看进程id对应的进程名tasklist|findstr"14100"3.杀掉进程taskkill/f/t/im___8TestServer_Start_in_G

    2022年7月20日
    12
  • mybatis 设置jdbcType与JavaType和JdbcType对应表

    mybatis 设置jdbcType与JavaType和JdbcType对应表使用mybatis对mysql数据库进行增删改查时,如果传递的参数存在空值,那么会报空值异常: select*fromuserwhere1=1and &lt;iftest="params.userCode!=nullandparams.userCode.trim()!=”"&gt;anduserCode=#{params.userCode}…

    2022年10月20日
    0
  • axios的安装和使用

    axios的安装和使用文章目录一、axios介绍二、安装axios三、案例一、axios介绍什么是axios?Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。特性:1、从浏览器中创建XMLHttpRequests2、从node.js创建http请求3、支持PromiseAPI4、拦截请求和响应5、转换请求数据和响应数据6、取消请求7、自动转换JSON数据8、客户端支持防御XSRF浏览器支持:二、安装axios方法一:速.

    2022年10月22日
    0
  • RNN:timestep、inputsize、Batchsize的区别「建议收藏」

    近期读了一些关于LSTM的文章,但仍旧很难理解,关键就是不懂输入、输出是什么,相比于图像处理的CNN,RNN特别抽象。昨晚花了很大的精力去理解“遗留状态”这个概念,现在终于明白了一些,关键在timestep这个概念。关于timestep我们看到的所有的RNN结构图,其实都是在一个timestep中的,而不是整个序列。(这句话很简单,但真的是花了很长时间才领悟到的)以下引用自知乎回答:[我的…

    2022年4月16日
    159
  • 深度学习之GAN对抗神经网络

    深度学习之GAN对抗神经网络1、结构图2、知识点3、代码及案例#coding:utf-8###对抗生成网络案例#####<imgsrc="jpg/3.png"alt=&qu

    2022年8月4日
    1
  • nginx转发mysql连接

    nginx转发mysql连接场景:访问UAT环境,只能使用客户电脑访问,太难用了,于是就需要在自己电脑上跑代码,通过客户电脑中转来访问uat环境的数据库。选用nginx进行转发。配置如下:stream{upstreamcloudsocket{hash$remote_addrconsistent;server192.168.182.155:3306weight=5max_fails=3fail_timeout=30s;}server{

    2022年10月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号