算法_数学问题_Question5_出售金鱼(java实现)

这篇文章讲述的是算法初级部分的出售金鱼问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

小明将样的金鱼分5次出售:第1次卖出全部的一半加1/2条;第二次卖出余下的三分之一加1/3条;第三次卖出余下的四分之一加1/4条;第四次卖出余下的五分之一加1/5条;最后卖出余下的11条。试编程求出原来鱼缸里共有多少条鱼?

算法分析

穷举法,由题意可知第n次卖出剩余/(n+1)+1/(n+1)条假设第n次卖出前与的总数为x条,设第n次卖出后鱼缸中剩余f(n)条,则
f(n) = x-(x+1)/(n+1)
且f(5) = 11 ; 求f(0)时x为多少?
取值范围:n:0~5 ;f(0)>11

代码实现

package mathematics;

public class Q5_GoldenFish {
    /**
     * 问题描述:小明将样的金鱼分5次出售:第1次卖出全部的一半加1/2条;第二次卖出余下的
     *          三分之一加1/3条;第三次卖出余下的四分之一加1/4条;第四次卖出余下的五分
     *          之一加1/5条;最后卖出余下的11条。试编程求出原来鱼缸里共有多少条鱼?
     * 
     * 算法分析:穷举法,由题意可知第n次卖出剩余/(n+1)+1/(n+1)条假设第n次卖出前与的总
     *          数为x条,设第n次卖出后鱼缸中剩余f(n)条,则
     *                          f(n) = x-(x+1)/(n+1)
     *                          且f(5) = 11 ; 求f(0)时x为多少?
     *          取值范围:n:0~5 
     *                  f(0)>11
     */
    public static void main(String[] args) {
        int x , n ;
        boolean flag = true ;
        for(x = 11 ; flag ; x+=2){
            int fish = x ;
            for(n=1 ; n<5 ; n++){
                if((fish+1)%(n+1)==0)               //金鱼只能整条卖
                fish-=(fish+1)/(n+1) ;
                else
                    break ;
            }
            if(n==5 && fish==11){
                System.out.println("原来金鱼条数为:"+x);
                flag = false ;
            }
        }
    }
}

样例输出

原来金鱼条数为:59
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值