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;
}
}