近日老吴把他读小学的儿子的一道题拿给几个兄弟做,推来推去煞是麻烦。无奈用程序暴力破解之。话说有五个小矮人上山摘野果,摘回来后平均分,可是怎么也分不下去.因为分不平均.到了晚上,一个小矮人爬起来,从里面扔了一个,刚好能平均分成五份.然后他把自己的那份藏起来,就睡觉去了.第二个小矮个也爬了起来,也把果子扔了一个后刚好分成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
力为 阅读(1227)
评论(12) 编辑 收藏 引用 所属分类:
C++ Practice