7217:猴子吃桃

2018-01-15 17:13:38


7217:猴子吃桃

总时间限制: 3000ms 内存限制: 65536kB

描述 海滩上有一堆桃子,N只猴子来分。第一只猴子把这堆桃子平均分为N份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子接着把剩下的桃子平均分成N份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、……,第N只猴子仍是最终剩下的桃子分成N份,扔掉多了的一个,并拿走一份。

编写程序,输入猴子的数量N,输出海滩上最少的桃子数,使得每只猴子都可吃到桃子。

输入 一个整数N。

输出 输出当猴子数量为N时海滩上最少的桃子数。结果保证在int型范围内。

样例输入

2 样例输出

7

题目分析:

详见代码之中!!太简单了额.....

代码:

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