C编程:猴子分桃问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 04:01:48
有1堆苹果共 m 个,由 n 只猴子按个数平均分配。每次到达苹果堆放地的猴子只有1只,而且每个猴子都会平均分 1 次苹果。第1个到达的猴子将苹果平均分成 n 等份,但发现多 k ( k < n )个,于是,将多余的k个扔掉,然后拿走其中的1等份。第 2 个猴子同样将剩余的苹果又分成 n 等份,也发现多 k 个,并同样将多余的 k 个扔掉,然后拿走其中1等份。之后的每个猴子都这样(将剩余的苹果又分成 n 等份,也发现多 k 个,并将多余的 k 个扔掉,然后拿走其中1等份)。假设最后的猴子分配后至少可以拿走1个苹果,请根据输入的 n 和 k值,计算最小的 m
这个是我写的,请问哪里错了?
#include<stdio.h>
#include<math.h>
void main()
{
float m,n,k,a,i;
scanf("%f %f",&n,&k);
for(a=1;;a++)
{
m=n*a+k;
for(i=1;i<=n-1;i++)
m=m*n/(n-1)+k;
if(m==(int)m)
break;
}
printf("%f",m);
}
请问应该怎么改?

#include<iostream.h>
int main()
{
int m,n,k,r;
cout<<"输入n和k的值"<<endl;
cin>>n>>k;
for(m=n+n*k;m>=0;m++)

{
while(m%n!=0)
{
m=m-k;
if(m%n==0)
{
cout<<m<<endl;
goto n;}
}}
n:cout<<"最少有"<<m<<"个桃子"<<endl;
system("PAUSE");
} C语言不会,C++写的