力为的技术博客
联系
聚合
管理
154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
公告
@上海浦东
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(58)
给我留言
查看公开留言
查看私人留言
随笔分类
(154)
2. Graphics(10)
3. VC&MFC&Qt(35)
4. C++ FAQ(35)
5. GP&STL&BOOST(10)
6. COM&ATL&WTL(5)
7. OGRE Analysis(14)
8. ACIS/HOOPS(4)
9.OpenCASCADE(13)
Mac&iOS(5)
Mac&iOS(1)
Tools(22)
积分与排名
积分 - 702942
排名 - 22
最新评论
1. re: 2015武汉校园招聘归来
@eryar
时间安排的太紧,就没有惊扰你啦。
--力为
2. re: 2015武汉校园招聘归来
评论内容较长,点击标题查看
--sunyuanbo
3. re: 2015武汉校园招聘归来
谢谢 您的笔记让我受益匪浅
--仝锡林
4. re: 2015武汉校园招聘归来
不知道来武汉了啊!
--eryar
5. re: 2015武汉校园招聘归来
@力为
谢谢提醒,还在学习中。。。
--编程小学徒
6. re: 2015武汉校园招聘归来
评论内容较长,点击标题查看
--编程小学徒
7. re: 2015武汉校园招聘归来[未登录]
评论内容较长,点击标题查看
--chipset
8. re: 2015武汉校园招聘归来
@编程小学徒
考研也不仅仅靠有编程兴趣就够了,还有其他的课程。好好准备吧,祝考试顺利。
--力为
9. re: 2015武汉校园招聘归来
评论内容较长,点击标题查看
--编程小学徒
10. re: 2015武汉校园招聘归来[未登录]
为了混口饭吃,大家都不容易啊,原谅刷题的同学吧。话说学校里能教啥呀,都靠自己用心,有上进心才是最重要的,否则笔试面试再好也是白扯。从面试官的角度看考试没有错,换成我会找有潜力的或者上进心强的。
--chipset
11. re: 【代码】使用Teigha读取DWG
要用vs2010编译么?
--jj
12. re: 临时对象引用[未登录]
最后一个例子也是零时变量?
--zhonghuajia
13. re: 为什么需要给函数返回类型加const
评论内容较长,点击标题查看
--冬瓜
14. re: 【代码】使用Teigha读取DWG
欢迎加入QQ群122751318,讨论Teigha
--Teigha开发
15. re: CMake + Qt5.1.0
@MIKE
还是不行。
不管是prefix还是library还是include,都尝试过了,不行,网上的方法都不行……
--Delbert
评论排行榜
1. Pro OGRE 3D Programming 电子版(54)
2. 手机号码黑名单(53)
3. 屏幕截图工具V1[附源码](22)
4. 波形显示不是很难(15)
5. 五个小矮人分桃子-一道小学生的作业题目(15)
6. 用CImage加载内存里的Image(14)
7. 用istringstream 解决问题一则(14)
8. OGRE动画练习(13)
9. VC+ADO操作数据库注意事项(1)(13)
10. fstream 和 中文路径(13)
11. OGRE粒子系统之在烈火中永生(11)
12. 如何通过FILE*操作内存文件?(11)
13. VC2008 Feature Pack的问题(11)
14. 升级到 VS2008 SP1 注意问题(11)
15. 失足于shared_ptr(11)
五个小矮人分桃子-一道小学生的作业题目
近日老吴把他读小学的儿子的一道题拿给几个兄弟做,推来推去煞是麻烦。无奈用程序暴力破解之。
话说有五个小矮人上山摘野果,摘回来后平均分,可是怎么也分不下去.因为分不平均.到了晚上,一个小矮人爬起来,从里面扔了一个,刚好能平均分成五份.然后他把自己的那份藏起来,就睡觉去了.第二个小矮个也爬了起来,也把果子扔了一个后刚好分成5份,他也把自己那份藏了起来.然后睡觉,余下3 个小矮人都是这样做的,过程完全一样. 请问,最初这堆果子至少有多少个?
#include
<
iostream
>
#define
BOY_COUNT (5)
bool
gotByOneBoy(
int
&
nTotal)
{
--
nTotal;
//
throw one
if
(nTotal
%
5
!=
0
)
return
false
;
nTotal
-=
nTotal
/
5
;
//
hide his
return
true
;
}
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
int
n
=
100
;
for
(; n
<
10000
;
++
n)
{
bool
bFind
=
true
;
int
nCur
=
n;
std::cout
<<
nCur
<<
std::endl;
for
(
int
nBoy
=
1
; nBoy
<=
BOY_COUNT;
++
nBoy)
{
bFind
=
bFind
&&
gotByOneBoy(nCur);
}
if
(bFind)
{
std::cout
<<
"
This is the result:
"
<<
n
<<
std::endl;
break
;
}
}
char
ch;
std::cin
>>
ch;
return
0
;
}
posted on 2007-06-25 18:07
力为
阅读(2829)
评论(15)
编辑
收藏
引用
所属分类:
Tools
评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-06-25 20:35
小不点
不是吧,C语言课程里有相同的题目!
<---
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?
--->
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-06-25 21:08
xlander
倒着推啊。
题目问的是:最少有多少个?
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-06-25 21:09
小不点
我不知道 我的方法对吗?自己当时做的.
顺便帮我修改下好了,呵呵,谢谢!
#include <iostream>
using namespace std;
int main()
{
int total = 0;
int i = 0;
for(total = 1 ; total < 10000; total++)
{
for(; i < 5; i++)
{
if((total - 1) % 5 == 0)
{
total = (total-1)/5;
}
else
{
break;
}
}
if(i == 5)
{
for(i = 0; i < 5; i++)
{
total = total * 5+1;
}
cout << "The least total is : " << total << endl;
break;
}
}
return 0;
}
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-06-25 22:57
力为
结果是 3121 就对了 :)
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-06-26 09:26
Rocky
总数=5*5*5*5*5 * x + 5*5*5*5 + 5*5*5 + 5*5 + 5 + 1
当x取1时总数最小,即3906个。
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-06-26 12:16
闲耘
see
http://blog.xianyun.org/2007/06/cpp-5.html
int getTotal(){
int total = 1; // 设初始野果总数1个
while (true){
int _t = total;
for (int i = 1; i <= 5; i++){
if ((_t - 1) % 5 == 0){ // 条件:扔掉1个能够5等分
_t = (_t - 1) / 5 * 4; // 第i个矮人拿走1/5后剩下的继续循环
if (i == 5){ // 如果5个矮人都拿到野果
return total;
}
}
}
total ++; // 不满足则野果总数加1
}
}
输出:3121
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-07-01 17:45
s
5+1
30+1
155+1
780+1
3905+1
3906
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-08-21 17:39
van
30个藏起来一份就是24,扔掉一个怎么会可以分成5份呢..
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-09-03 16:56
haha
怎么会这样的答案 我感觉不对啊 不就是逆推吗?
//4 3 2 1 0
#define M 5
#define N 1
int main(void)
{
int i ;
int sum=N;
for(i=0;i<M ; i++)
{
sum = sum*5 +1;
}
cout<<sum<<endl;
return 0;
}
3906个?!?
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-10-08 00:22
biogerm
T = 5(5(5(5(5n+1)+1)+1)+1)+1
n = 1
T = 3906
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-10-08 10:06
Icat
写了两个凑热闹,第一个把For做的事情手动换算了
第二个假装可以自定义数量,其实马上就溢出........
1.
#include <iostream>
using namespace std;
int main()
{
unsigned long x=0;//总数为X*5+1
while((((x*5+1)*256-2101))%(5*625))
{
x+=1;
}
cout<<x*5+1<<endl;
}
2.
#include <iostream>
using namespace std;
int main()
{
unsigned long lTotal=1;
unsigned long x=1;
int iMonkey=5;
//cin>>iMonkey;
bool bOK=false;
do
{
lTotal=x*iMonkey+1;
for(int i=1;i<iMonkey;++i)
{
lTotal=(lTotal+1)*(iMonkey)/(iMonkey-1);
if((lTotal-1)%(iMonkey))
break;
else
if(i==(iMonkey-1))bOK=true;
}
++x;
}while(!bOK);
cout<<y<<endl;
}
3121
楼上几位的3906,思路差不多,但留下的是4/5~
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2007-10-08 21:04
Bill Gates
没有想到这个小题可以盖到如此高的楼~~
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2010-04-08 21:55
看看哪个方法好一点
#include <iostream>
bool test(int total, int level)
{
if (level==0)
return true;
if ((total-1)%5!=0)
return false;
total=(total-1)/5 *4;
return test(total,level-1);
}
bool test2(int iGet,int level,int& beforGet)
{
beforGet=iGet*5+1;
if (level==5)
return true;
if ((beforGet%4)!=0)
return false;
iGet=beforGet/4;
return test2(iGet,level+1,beforGet);
}
int main(int argc,char*argv[])
{
int i=1;
int total;
for (;i<10000 ;++i)
{
if (test2(i,1,total))
{
std::cout<<total<<std::endl;
// break;
}
}
for (i=0;i<10000 ;++i)
{
if (test(i,5))
{
std::cout<<i<<std::endl;
// break;
}
}
return 0;
}
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目 2010-10-17 21:04
666
在森林里住着五个小矮人,一天他们从山上采来一堆野果,可怎么也分不公平,就都去睡觉了。到了半夜,有一个小矮人偷偷地起来,在这堆野果里拿出一个扔了,剩下的野果正好可分成5等份,他拿了其中的一分藏了起来,又睡觉去了。接着,第二个小矮人也起来了,也扔了一个野果。又恰好分成五等份,也拿了其中一份藏了起来,又去睡觉了。以后另外3人也一一照样扔掉了一个野果,还能分成5等份......原来这堆野果至少有多少个呢?李永莉你好:我来还原一下有3121个野果,第一个人去分时剩(3121-1)×4÷5=2496 第二个人去分时剩(2496-1)×4÷5=1996 第三个人去分时剩(1996-1)×4÷5=1596 第四个人去分时剩(1596-1)×4÷5=1276 第五个人去分时拿走了(1276-1)÷5=255 谢谢你
回复
更多评论
#
re: 五个小矮人分桃子-一道小学生的作业题目
2010-12-06 16:49
wu4long
晕了,难道不能先计算他们的公式.然后简单迭代一下.后面就好算了.
设总数为a, 第一次为a1, 第二次a2,依次类推,最后一个小猴子藏起来的为a5.
a1 = (a-1)/5
a2 = (4a1 -1)/5
a3 = (4a2 -1)/5
a4 = (4a3-1)/5
a5 = (4a4-1)/5
a = a1 + a2 + a3 + a4 + a5 + 5 + 4a5
迭代: 算得
a = 12 a5 + 8 + 53(a5 + 1)/256
明显 53 为素数, 所以 必然 a5 = 256* n - 1. (n 为自然数)
这时,这段程序就很简单了. 呵呵
a5 = 256* 1 -1 = 255
a = 12 * a5 + 8 + 53(a5+1)/256 = 3121.
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
Perforce的shelved 命令
我的原创技术随笔大全(2000~2009)
Vista 远程连接设置
Boost.Python与C++互操作的问题(更新)
STL容器误用一则
运算符 && 和 ||
[Debug] 解决图形没有显示的问题
屏幕截图工具V2
VC2008 竟然不带 glaux.lib!
用wxWidgets做界面
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 力为