7217:猴子吃桃
likztime
2018-01-15 17:13:38
#7217:猴子吃桃
总时间限制: 3000ms 内存限制: 65536kB
描述
海滩上有一堆桃子,N只猴子来分。第一只猴子把这堆桃子平均分为N份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子接着把剩下的桃子平均分成N份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、……,第N只猴子仍是最终剩下的桃子分成N份,扔掉多了的一个,并拿走一份。
编写程序,输入猴子的数量N,输出海滩上最少的桃子数,使得每只猴子都可吃到桃子。
输入
一个整数N。
输出
输出当猴子数量为N时海滩上最少的桃子数。结果保证在int型范围内。
样例输入
2
样例输出
7
##题目分析:
##详见代码之中!!太简单了额.....
代码:
```cpp
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n;
cin >> n;
for(int x=1;;x++) //枚举最后一只猴子分到的桃子数
{
int t=x;
t=t*n+1; //第n只猴子分桃前的桃子数
bool flag = true; //判断前n-1只是否能顺利分到桃子
for(int i=n-1;i>=1;i--)
{
if(t%(n-1)!= 0)
{
flag = false;
break;
}
t=t/(n-1)*n+1; //前一只猴子分桃前的总数 = 后一只分桃前的总数 % (n-1/n) + 1
}
if(flag)
{
cout << t << endl;
break;
}
}
return 0;
}
```