java猴子分桃子


题目描述

老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。

第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。

第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。

后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。

这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。

eg:

输入:
5
1
0

输出:
3121 1025
1 1


以下是本篇文章正文内容,下面案例可供参考

解题思路

此题考察数学分析

分完剩余的桃子数

如果有n个猴子,设每次开始时有Xi个桃子,每次分5堆,剩1个。
如果最开始的时候借4个桃子,那么,每次都可以平分5堆
则每次要分的桃子就是Xi+4个

即:
Xi—>代表第i个猴子拿的桃子数
Xi+4—>代表要分的桃子个数
(Xi+4)*(4/5)—>代表分完剩余的桃子数

第i次分要分的桃子个数分完剩余的桃子数
1X1+4(X1+4)*(4/5)
2X2+4(X2+4)*(4/5)
3X3+4(X3+4)*(4/5)

由题意可知:第一次分完剩的桃子数 = 第二次要分的桃子个数

则:
X2+4 = (X1+4) * (4/5)

X3+4 = (X2+4) * (4/5) = (X1+4) * (4/5) * (4/5)

X4+4 = (X3+4) * (4/5) = (X2+4) * (4/5) * (4/5) = (X1+4) * (4/5)3
……

即(Xi+4)*(4/5)n—>代表第n次分完剩余的桃子数

因为剩余的桃子数为整数,则Xi+4 = 5n,X1 = 5n - 4

老猴子获得的桃子数

1~n个猴子分完桃子后给老猴子1个,共n个

剩余(X1+4)* (4/5)n个,且需要满足X1最小为1,即为4n

再减去最开始借的4个

则老猴子获得的为n + 4n - 4

代码如下

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int n = sc.nextInt();
            if (n==0) break;
            long a = (long)(Math.pow(5,n)-4);//分完剩余的桃子数
            long b = (long)(Math.pow(4,n)+n-4);//老猴子获得的桃子数
            System.out.println(a+" "+b);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值