A、B、C、D、E五人去摸鱼(有兴趣的话试试看!)

niu05500230 2009-08-23 08:47:53
A、B、C、D、E五人去海边摸鱼,然后一起睡着了。A最先起来,把鱼分成五份,扔掉多余的一条,然后拿走属于自己的一份;B接着醒来,将剩下的鱼分成五份,扔掉多余的一条,然后拿走属于自己的一份;C、D、E三人依次醒来,用同样的方法分鱼,然后拿走属于自己的。问他们最少摸了多少条鱼?
...全文
423 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
AAA20090987 2009-10-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_new 的回复:]
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
[/Quote]

真的很强大。
linren 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_new 的回复:]
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
[/Quote]
好办法!
icansaymyabc 2009-08-25
  • 打赏
  • 举报
回复
Sub 丑陋的穷举法()
Dim i As Long, j As Long

i = 1
Do
j = i
If j Mod 5 = 1 Then 'a
j = (j \ 5) * 4
If j Mod 5 = 1 Then 'b
j = (j \ 5) * 4
If j Mod 5 = 1 Then 'c
j = (j \ 5) * 4
If j Mod 5 = 1 Then 'd
j = (j \ 5) * 4
If j Mod 5 = 1 Then 'e
Exit Do
End If
End If
End If
End If
End If
i = i + 1
Loop


MsgBox i 'i= 3121
End Sub
jinling4388 2009-08-25
  • 打赏
  • 举报
回复
顶,好的思维方式
bowfnfje 2009-08-25
  • 打赏
  • 举报
回复
最笨方法
int i = 6;
while(i++)
{
if (i%5 == 1)
{
int a = i-((i-1)/5)-1;

if (a%5 == 1)
{
a = a-((a-1)/5)-1;

if (a%5 == 1)
{
a = a-((a-1)/5)-1;

if (a%5 == 1)
{
a = a-((a-1)/5)-1;

if (a%5 == 1)
{
a = a-((a-1)/5)-1;

if (a%5==0)
{
break;
}

}
}
}
}

}
}
int s = i;
MichaelBomb 2009-08-25
  • 打赏
  • 举报
回复
有点意思
talon1015 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_new 的回复:]
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
[/Quote]
ZXW0521 2009-08-25
  • 打赏
  • 举报
回复
8楼强
ArmStronger 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_new 的回复:]
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
[/Quote]

很强大
帅得不敢出门 2009-08-25
  • 打赏
  • 举报
回复
想法同5楼
8楼的很有技巧
sdqd2012 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_new 的回复:]
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
[/Quote]
顶,真巧妙
niu05500230 2009-08-25
  • 打赏
  • 举报
回复
8楼思路新颖啊,学习了!
niu05500230 2009-08-25
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>

bool bFlag=true;
int avg(int n, int i);

int main(int argc, char* argv[])
{
for (int n=6, i=0;bFlag;n++)
{
if (5==avg(n,i))
{
bFlag=false;
}
}
printf("%d\n",n-1); //3121;
return 0;
}

int avg(int n, int i)
{
while (i<6)
{
if ((0==(n-1)%5)&&(n-1)>0)
{
//n=4*(n-1)/5; //
n=(n-(n-1)/5-1);
i++;
}
else
break;
}
return i;
}
niu05500230 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hikaliv 的回复:]
这是一个很早的“人和猴子分椰子”的问题的类似问题……

我在这篇写过分析:

http://blog.csdn.net/hikaliv/archive/2009/05/30/4225660.aspx
[/Quote]

你这种算法跟我第一次算出来一样,3906,正确答案是3121

woshidgw 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_new 的回复:]
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
[/Quote]
错了,是赞这个。
woshidgw 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 icansaymyabc 的回复:]
VB codeSub xyz()Dim iAsLong, jAsLong

i=1Do
j= iIf jMod5=1Then'a j= j\5*4If jMod5=1Then'b j= j\5*4If jMod5=1Then'c j= j\5*4If jMod5=1Then'd ¡­
[/Quote]
ancjf__ 2009-08-25
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int fish = 1;
int tmp;
int i;

while(fish ++)
{
tmp = fish;

for(i = 0; i < 5; i++){
tmp -= 1; //丢一条鱼
if( tmp % 5 != 0 || tmp == 0 ) break; //不能恰好分成5份或没鱼了
tmp = tmp-tmp /5; //拿走自己的一份
if( i == 4 && tmp != 0 ){
printf("%d\n",fish); //符合条件,打印出鱼的数目,推出
system("PAUSE");
return 0;
}
}
}

}

结果 3121
fly_new 2009-08-24
  • 打赏
  • 举报
回复
换个思路想吧,假设鱼有sum支,如果我给这堆鱼添4支;那么现在鱼的总和就是5的倍数了。

那么,A拿了1/5之后扔一支,剩下的鱼里还是多了添加的4支;那么这时候的鱼也能被5整除。
依此类推,………………

就是说,添加了4支鱼后,这个数目要能被5整除5次。即最小有鱼(n=1)

5*5*5*5*5 × n= sum + 4

sum = 3121
icansaymyabc 2009-08-24
  • 打赏
  • 举报
回复
Sub xyz()
Dim i As Long, j As Long

i = 1
Do
j = i
If j Mod 5 = 1 Then 'a
j = j \ 5 * 4
If j Mod 5 = 1 Then 'b
j = j \ 5 * 4
If j Mod 5 = 1 Then 'c
j = j \ 5 * 4
If j Mod 5 = 1 Then 'd
j = j \ 5 * 4
If j Mod 5 = 1 Then 'e
Exit Do
End If
End If
End If
End If
End If
i = i + 1
Loop

MsgBox i 'i= 168421
End Sub
arong1234 2009-08-23
  • 打赏
  • 举报
回复
结果是3121
[Quote=引用 5 楼 arong1234 的回复:]
最后一位E拿走x条
因此在E分之前剩下5x+1条
D分前剩下:5(5x+1)/4 +1 = 25x/4+9/4
C分前剩下:5(25x/4+9/4)/4+1=125x/16+61/16
B分前剩下:5(125x/16+61/16)/4+1=625x/64+369/64
A分前剩下:5(625x/64+369/64)/4+1=3125x/256+2101/256
上述方程必须有整数解,
3125x+2101必须是256的整数倍
(12×256+53)x+8×256+53
因此53x+53能被256整除
似乎x要等于255?
引用楼主 niu05500230 的回复:
A、B、C、D、E五人去海边摸鱼,然后一起睡着了。A最先起来,把鱼分成五份,扔掉多余的一条,然后拿走属于自己的一份;B接着醒来,将剩下的鱼分成五份,扔掉多余的一条,然后拿走属于自己的一份;C、D、E三人依次醒来,用同样的方法分鱼,然后拿走属于自己的。问他们最少摸了多少条鱼?

[/Quote]
加载更多回复(5)
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧