五人分鱼(使用公式法)

#include <stdio.h>

#include <math.h>

int main()

{

int i, n = 5, // 人数

num = pow(n, n) - n + 1;

printf("至少合伙捕鱼:%d条\n", num);

printf("分别见到鱼的条数:");

for(i=0; i<n; i++, num=4*(num-1)/5)

printf("%d%c", num, i==n-1? '\n': ' ');

}

设 E 最后留下了 x 条鱼,并用每个人的名字代表其醒来时看到的鱼,则可得:

E = 5x/4 + 1

E + 4 = 5(x + 4)/4

E = 5(x + 4)/4 - 4

D = 5E/4 + 1 = 25(x + 4)/16 - 4

C = 5D/4 + 1 = 125(x + 4)/64 - 4

B = 5C/4 + 1 = 625(x + 4)/256 - 4

A = 5B/4 + 1 = 3125(x + 4)/1024 - 4

由于A为整数,故3125(x + 4)必须要能够整除1024,且当A取得整数后,由于B、C、D、E式中的分母256、64、16、4皆为1024的因数,也能一同取得整数.

易知当x + 4 = 1024时,A取得最小值3121

使用数学归纳法可得出公式:

至少捕到的鱼 = 人数^人数 - 人数 + 1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值