列表

详情


JD3. 小东分苹果

描述

果园里有一堆苹果,一共n头(n大于1小于8)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔掉一个然后拿走一份,以此类推直到最后一头熊都是这样(最后一头熊扔掉后可以拿走0个,也算是n份均分)。问最初这堆苹果最少有多少个?

输入描述

给定一个整数n,表示熊的头数

输出描述

返回最初的苹果数。保证有解。

示例1

输入:

2

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 404KB, 提交时间: 2021-12-10

class Apples {
public:
    int getInitial(int n) {
        // write code here
//         assert(n > 1);
//         assert(n < 10);
        int start = 0;
        while(1)
        {
            int res = start, idx = 0;
            while(idx<n && !(res%(n - 1)))
            {
                res = res/(n - 1)*n + 1;
                ++idx;
            }
            if(idx == n) return res;
            start += n-1;
        }
        return -10086;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 420KB, 提交时间: 2021-09-11

class Apples {
public:
    int getInitial(int n) {
        // write code here
        
        return pow(n, n) + 1 - n;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 424KB, 提交时间: 2022-06-15

class Apples {
public:
    int getInitial(int n) {
        // write code here
        int ans = 1;
        for(int i=1;i<=n;++i) ans *= n;
        return ans - n + 1;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 424KB, 提交时间: 2022-06-13

class Apples {
public:
    int getInitial(int n) {
        // write code here
        if(n==1)return 1;
        if(n==2)return 3;
        int result = 1;
        for(int i = 1;i<n-1;i++)
        {
            result *= n;
            result += 1;
        }
        return (result*(n-1)*n)+1;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 428KB, 提交时间: 2022-07-21

class Apples {
public:
    int getInitial(int n) {
        //假设苹果总数为x
        //第一头熊分剩下x-1-(x-1)/n=(x-1)*(1-1/n)  1表示扔掉的苹果,(x-1)/n表示第一头熊拿走的苹果
        //第二头熊分剩下(x-1)*(1-1/n) - 1 - ((x-1)*(1-1/n)-1)/n = ((x-1)*(1-1/n)-1)*(1-1/n)
        // = (x-1)*(1-1/n)*(1-1/n) - (1-1/n)
        //...
        //第n头熊分剩下(x-1)*(1-1/n)^n - (1-1/n)^(n-1)
        //x-1至少为
        //解方程得:x = n^n+1-n
        return pow(n, n)+1-n;
    }
};
//(n-1)/n*x + (n-1)*(n-1)/n - (n-1) = (n-1)/n*x + (n-1)(1-1/n-1)  = (n-1)/n*x + (n-1)(-1/n)
// = (n-1)/n*x - (n-1)/n
// = (n-1)/n*(x-1)
// = (x-1)*(1-1/n)

上一题