zoukankan      html  css  js  c++  java
  • 猴子分桃

    m只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的m堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有m-1堆桃。于是合在一起,分成相等的m堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?

    直接上代码:

     1 import java.util.Scanner;
     2 public class huawei_taozi {
     3     /**
     4      * 猴子分桃问题
     5      */
     6     public static void main(String[] args) {
     7         Scanner scanner = new Scanner(System.in);
     8         System.out.println("输入猴子个数:");
     9         
    10         int num = scanner.nextInt();
    11         
    12         int monkey=1;  //要分桃的猴子数  
    13         int peaches=1; //桃的总数  
    14         int peach=1;   //每次分桃的总数  
    15         
    16         //循环进行给每个猴子分桃  
    17         while(monkey<=num)  
    18         {  
    19             //如果成功分桃  
    20             //分桃的标准是每一堆不为0    peach/num != 0
    21             //而且平分之后要余1          peach%num==1    
    22             if(peach%num==1 && peach/num != 0)  
    23             {  
    24                 //当一堆分完之后,每一堆的桃子个数为peach/num(余数为1,忽略不计)
    25                 //所以下次分时,桃子总个数是(peach/num)*(num-1)
    26                 peach=(peach/num)*(num-1);  
    27                 
    28                 //换下一个猴子  
    29                 monkey++;  
    30                 
    31             }  
    32             //如果失败,重新分桃这时可分桃数量加1  
    33             else  
    34             {  
    35                 peaches++;  
    36                 peach=peaches;  
    37                 monkey=1;  
    38             }  
    39         }  
    40         System.out.println("桃的最小总数为:"+peaches);  
    41     }
    42 }

    m超过10好像就是大数问题了。

    这个题可以总结出一个公式出来。

    m^m - (m-1)

    m表示猴子个数 

  • 相关阅读:
    常见的块级元素和行级元素
    CentOS 利用 yum 安装卸载软件常用命令
    MySQL 派生表(Derived Table) Merge Optimization
    MySQL中的两种临时表
    集中化管理平台 — Ansible 详解
    MySQL 错误码对照
    mysqldump 工具使用详解——参数选项
    git 命令参考手册
    XtraBackup 备份与恢复实例讲解
    XtraBackup 原理与安装
  • 原文地址:https://www.cnblogs.com/tech-bird/p/3971273.html
Copyright © 2011-2022 走看看