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


     

  • 相关阅读:
    Codeforces 812E Sagheer and Apple Tree
    bzoj 4765: 普通计算姬
    bzoj 4552: [Tjoi2016&Heoi2016]排序
    bzoj 1096: [ZJOI2007]仓库建设
    bzoj 1030: [JSOI2007]文本生成器
    bzoj 1095: [ZJOI2007]Hide 捉迷藏
    JS实现HashMap
    A4纸表格打印
    JAVA字符串格式化-String.format()的使用
    证书打印CSS知识点总结
  • 原文地址:https://www.cnblogs.com/greatalexander/p/2194604.html
Copyright © 2011-2022 走看看