zoukankan      html  css  js  c++  java
  • 创新工场2012笔试编程捕鱼和分鱼

    创新工场2012笔试编程题目题目三:

    A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三竿,A第一个醒来,他将鱼分成五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成五份,把多余的一条鱼扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?

    分析:

    假设有X条鱼,那么

    第1人扔鱼拿鱼之后鱼的数量


    第2人扔鱼拿鱼之后鱼的数量

    ......
    第N人分鱼时鱼的数量

    依次代入得

    所有

    得到这个我们可以编程了,代码如下 :

            /// <summary>
            /// 
            /// </summary>
            /// <param name="personCount">人数</param>
            /// <param name="throwCount">每次扔鱼数</param>
            /// <returns></returns>
            public long CalcFish( int personCount, int throwCount )
            {
                long totalCount = 0;
                long offset = 0;
                for ( int i = 0; i < personCount; i++ )
                {
                    offset += ( long ) Math.Pow( personCount, i ) * ( long ) Math.Pow( personCount - throwCount, personCount - i );
                }
    
                long totalFactor = ( long ) Math.Pow( personCount - throwCount, personCount );
                long kFachtor = ( long ) Math.Pow( personCount, personCount + 1 );
                for ( int k = 1; k < totalFactor; k++ )
                {
                    long x = kFachtor * k + offset;
                    if ( x % totalFactor == 0 )
                    {
                        totalCount = x / totalFactor;
                        break;
                    }
                }
    
                return totalCount;
            }
    

    调用CalcFish(5,1),测试结果如下


     

  • 相关阅读:
    hadoop 异常及处理总结-02(小马哥精品)
    Linux环境变量(小马哥推荐)
    Apache Tomcat 8.5 安全配置与高并发优化
    深入理解分布式系统中的缓存架构(上)
    Redis的n种妙用,不仅仅是缓存
    springBoot整合ecache缓存
    Spark Streaming实时处理应用
    Spark 实践
    spark性能调优
    Spark调优
  • 原文地址:https://www.cnblogs.com/greatalexander/p/2194604.html
Copyright © 2011-2022 走看看