分鱼问题

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


 1 #include <iostream>
2 using namespace std;
3
4 bool fun1(int n, int count)
5 {
6 if (0 == count)
7 {
8 return false;
9 }
10 if (0 == n)
11 {
12 return true;
13 }
14 if (1 != (count % 5))
15 {
16 return false;
17 }
18 return fun1(n - 1, count / 5 * 4);
19
20 }
21 int fun2(int n)
22 {
23 if (n == 1)
24 {
25 static int i = 0;
26 do
27 {
28 i++;
29 }
30 while (i % 5 != 1);
31 return i;
32 }
33 else
34 {
35 int t = 0;
36 do
37 {
38 t = fun2(n - 1);
39 }
40 while (t % 4 != 0);
41 return (t / 4 * 5 + 1) ;
42 }
43 }
44 int fun3(void)
45 {
46 bool flag = false;
47 for (int n = 6; ; n += 5)
48 {
49 int temp = n;
50 flag = true;
51 for (int j = 5; j > 0; --j)
52 {
53 if (temp % 5 != 1)
54 {
55 flag = false;
56 break;
57 }
58 temp = temp / 5 * 4;
59 }
60 if (flag)
61 {
62 return n;
63 }
64 }
65 }
66 int main()
67 {
68 for (int n = 0; true; ++n)
69 {
70 if (fun1(5, n))
71 {
72 cout << n << endl;
73 break;
74 }
75 }
76
77 cout << fun2(5) << endl;
78 cout << fun3() << endl;
79
80 return 0;
81 }

输出是:


3121
3121
3121

Process returned 0 (0x0) execution time : 0.807 s
Press any key to continue.

分鱼问题

时间: 2024-10-07 23:09:16

分鱼问题的相关文章

五人分鱼

/* 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)

递归解决分鱼问题

问题: 5个人夜间捕鱼,早上A先醒来,将鱼分为5份,将多的一条扔进海里,然后B醒来,不知道A已经拿走一份鱼,就将剩下的鱼分成5份,扔掉多余的一条,接着C,D,E醒来,按同样的方法分鱼,问这5个人合伙捕到多少条鱼,每个人醒来后所看到多少条鱼. #include <stdio.h> #include <stdlib.h> int fish(int n, int x); /* run this program using the console pauser or add your ow

Hadoop化繁为简—hdfs的核心剖析

层层递进-解开hdfs的面纱 1.hdfs是什么?它与普通服务器的文件系统有什么区别?它的特性有什么? 2.hdfs的工作原理是怎样的? 3.每台机器都单独启动有什么弊端?假设有1000台机器需要启动?该怎么解决呢? 4.hdfs配置与使用 5.利用javaApi充当客户端访问hdfs hdfs简介 hdfs就是一个分布式文件系统.简单说,就是一个“分鱼展”的大硬盘,跟普通的文件系统没什么区别,只是它有多台机器共同承担存储任务. 分鱼展指的是hdfs的特性分别指分布式.冗余性.可拓展. 普通服务

[转]100个经典C语言程序(益智类问题)

目录: 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 1.7 分数四则运算 17.平分七筐鱼 18.有限5位数 19. 8 除不尽的数 21.4位反序数 22.求车速 23.阿姆斯特朗数 24.完全数 26.亲密数 27.自守数 28.回文数 29.求具有abcd=(ab+c

[转]100个经典C语言程序

本文转载自:http://blog.sina.com.cn/s/articlelist_1615065844_0_1.html 1.绘制余弦曲线 在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线*问题分析与算法设计如果在程序中使用数组,这个问题十分简单.但若规定不能使用数组,问题就变得不容易了. 关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行. 为了获得本文要求的图形就必须在一行

nomasp 博客导读:Android、UWP、Algorithm、Lisp(找工作中……

Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸.本博客会持续更新.感谢您的支持.欢迎您的关注与留言.博客有多个专栏,各自是关于 Android应用开发 .Windows App开发 . UWP(通用Windows平台)开发 . SICP习题解 和 Scheme语言学习 . 算法解析 与 LeetCode等题解 .而近期会加入的文章将主要是算法和Android.只是其他内容也会继续完好. About the Author 独立 Windows App 和

渔夫捕鱼问题

马上要参加蓝桥杯了,这几天在刷算法题,放一道题欢迎大家提出意见 原题如下: a,b,c,d,e5个渔夫夜间合伙捕鱼,凌晨时都疲倦不堪,各自在河边的树丛中找地方睡着了.第二天,a第一个醒来,将鱼分成5份,将多余的一条放回河里.b,c,d,e依次醒来,也都同样的办法分鱼,问5个渔夫至少合伙捕了多少条鱼? /*渔夫捕鱼问题C实现*/ #include<stdio.h> int main(void){ int n,x,flag; for(n=6;flag;n++){ //由于最后一人最少需要6条鱼,所

算法训练

一.捕鱼和分鱼 A.B.C.D.E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉.日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份.B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份.C.D.E依次醒来,也按同样的方法拿走鱼.问他们合伙至少捕了多少条鱼? 1 /** 2 * 3 * 捕鱼和分鱼 4 * 5 * A.B.C.D.E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉. 6 * 7 * 日上三杆,

第四课:Yarn和Map/Reduce配置启动和原理讲解

前三节课主要讲了hdfs,hdfs就是一个分鱼展的大硬盘 分:分块 鱼:冗余 展:动态扩展 接下来讲云计算,也可以理解为分布式计算,其设计原则: 移动计算,而不是移动数据 前面说过,hadoop由hdfs,yarn,map/reduce组成, 而yarn(Yet Another Resource Negotiator)是资源调度系统,yarn调配的是内存和cpu,不参入计算. map/reduce是计算引擎. (1)配置yarn yarn由一台resourceManager和n台dataMana