zoukankan      html  css  js  c++  java
  • 五人分鱼

    /*

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

       假设 

       fun(1)

       fun(2) = ((fun(1) - 1) / 5) * 4 // 隐含 (fun(1) - 1) % 5 == 0

       fun(3) = ((fun(2) - 1) / 5) * 4 // 隐含 (fun(2) - 1) % 5 == 0

       fun(4) = ((fun(3) - 1) / 5) * 4 // 隐含 (fun(3) - 1) % 5 == 0   

       fun(5) = ((fun(4) - 1) / 5) * 4 // 隐含 (fun(4) - 1) % 5 == 0

       fun(6) = ((fun(5) - 1) / 5) * 4 // 隐含 (fun(5) - 1) % 5 == 0

     */


    /*
      自己尝试完善了分鱼的方法,(其实是两个人分的时候结果对不上= =),
      totalFish 要定义成person+1比较准确,然后后面能否分鱼判断的时候要加上一个条件:
        剩下的鱼扔掉一条后要足够分人份,即:leftFish - 1 >= person
    */
    1
    #include <stdio.h> 2 int shareFish(int person){ 3 //假设捕鱼6条(即是第一次分鱼至少要几条鱼) 4 int totalFish = person+1; 5 //计数器,往上叠加鱼的数目直至条件成立 6 for (int i = totalFish; 1; i++) { 7 //记录剩下的鱼数 8 int leftFish = i; 9 //假设找到了这个数字 10 int isFind = 1; 11 //分五次鱼 12 for (int j = 0; j < person; j++) { 13 //尝试能否分出鱼,鱼至少要够人份 14 if ((leftFish - 1 ) % person == 0 && leftFish - 1 >= person) { 15 //计算分鱼之后的鱼数目 16 leftFish = (( leftFish - 1 ) / person ) * ( person - 1 ); 17 }else{ 18 //如果不能分就跳出循环(表示没找到) 19 isFind = 0; 20 break; 21 } 22 } 23 //如果可以分就跳出循环 24 if (isFind) { 25 totalFish = i; 26 // printf("%d",i); 27 break; 28 } 29 } 30 return totalFish; 31 } 32 33 int main(){ 34 //五个人分鱼,呵呵,把'5'改掉想几个人就几个人分! 35 int total = shareFish(5); 36 printf("%d",total); 37 return 0; 38 }
  • 相关阅读:
    了解linux web的监听工具
    Ubuntu 16.04 安装docker-ce,docker-compose
    php 连接mysql 主机 localhost,显示 No such file or directory
    vagrant ssh try
    解决 WordPress“正在执行例行维护,请一分钟后回来”
    wordpress Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference
    ubuntu phpize 安裝
    ubuntu 16.04 pecl 不能安裝 mcrypt
    wp api jwt 403 (Forbidden) -- JWT is not configurated properly, please contact the admin
    docker gitlab backup
  • 原文地址:https://www.cnblogs.com/glchan/p/4799781.html
Copyright © 2011-2022 走看看