猴子分桃问题
来源:百度文库 编辑:神马文学网 时间:2024/10/03 02:33:50
/********************经典猴子分桃问题算法实现*************/
//最后一只拿走:x 一共: 5*x+1
//倒数第二只拿走:(5*x+1)/4 (5*x+1)/4*5+1
//倒数第三只拿走:((5*x+1)/4*5+1)/4 ((5*x+1)/4*5+1)/4*5+1
/********************************************************/
int getNum(){
int x=1; //x为每个猴子分得桃子的初始值
int old=x;
int sum=0; //用于累加求和
for(int j=1;j<=5;j++)
{
sum=5*x+1;
x=sum/4;
if(sum%4!=0) { //当和不能被4整除时,说明初始值不对
x=++old; //下一个初始值
if(j==5) break;
j=0;
continue;
}
}
return sum;
}
//最后一只拿走:x 一共: 5*x+1
//倒数第二只拿走:(5*x+1)/4 (5*x+1)/4*5+1
//倒数第三只拿走:((5*x+1)/4*5+1)/4 ((5*x+1)/4*5+1)/4*5+1
/********************************************************/
int getNum(){
int x=1; //x为每个猴子分得桃子的初始值
int old=x;
int sum=0; //用于累加求和
for(int j=1;j<=5;j++)
{
sum=5*x+1;
x=sum/4;
if(sum%4!=0) { //当和不能被4整除时,说明初始值不对
x=++old; //下一个初始值
if(j==5) break;
j=0;
continue;
}
}
return sum;
}