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),测试结果如下


     

  • 相关阅读:
    Flink批处理读取Hive写入MySql
    数组与链表的优缺点
    Flink任务暂停重启
    Flink优化总结
    Flink集群监控
    flink连接器-流处理-读写redis
    Flink连接器-批处理-读写Hbase
    flink on yarn
    java的常量定界符
    特殊注释的使用
  • 原文地址:https://www.cnblogs.com/greatalexander/p/2194604.html
Copyright © 2011-2022 走看看