您的位置:首页 > 职场人生

京东面试题,N只熊分苹果

2015-10-22 22:47 447 查看


如上图所示的题目:

1.从最小来入手,可以首先假设最后一个熊拿到的苹果是1个,那么当时剩余的苹果就有n-1个

2.那么上一只熊分完之后苹果有sum=n个,分之前的苹果有sum/(n-1)*n+1个,同理上推

3.通过思路2可以得知sum必须可以整除n-1,如果不整除的话,那就重新回到1,强剩余苹果数加1,继续往下操作

代码如下:

#include <iostream>
using namespace std;

int fun(int n);
bool isDivide(int divided,int n);
int main()
{
for(int i=2;i<9;i++)
{
int ret=fun(i);
printf("%d\n",ret);
}

}
bool isDivide(int divided,int n)
{
if(0==divided%n)
return true;
return false;
}
int fun(int n)
{
int nlef=n-1;
int sum=nlef;
for(int i=n;i>=1;i--)
{
if(!isDivide(sum,n-1))
{
nlef++;
sum=nlef;
i=n+1;
continue;
}
sum=sum/(n-1)*n+1;
}
return sum;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: