1. 猴子分桃:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;……其他几只猴子也都是这样分的。问:这堆桃至少有多少个?
2. 渔夫分鱼:abcde五人打鱼,打完睡觉,a先醒来,扔掉1条鱼,把剩下的等分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼,写程序和算法实现。提示:共打了多少条鱼的结果有很多。但求最少打的鱼的结果是3121条鱼。
思考:如果不是平均分呢?
参考答案:
publicstaticvoidHowManyPeachs(intnum)
{
int[] monkey = newint[num];
int sum = 6;
inttmpNum = 0;
boolhasFound = false;
while(true)
{
tmpNum = sum;
for (int k = 0; k { if ((tmpNum – 1) % num != 0) { break; } else { monkey[k] = (tmpNum – 1) / num; tmpNum = tmpNum – monkey[k] – 1; } if (k == num – 1) { Console.WriteLine(“***********************************”); Console.WriteLine(“This is the solution:”); Console.WriteLine(“***********************************”); Console.Write(“Sum: {0}”, sum); for (int j = 0; j { Console.Write(“, M{0}: {1}”, j + 1, monkey[j]); } Console.WriteLine(“.”); Console.WriteLine(); hasFound = true; } } if (hasFound == true) { break; } sum = sum + 1; } }