京东编程真题_牛客_JD3——小东分苹果

题目描述

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

测试样例:

2
返回:3

思路

推公式:

n为4的规律表

根据excel列出的表可以得出解是有规律性的,可以推公式。
最后剩的苹果数res(pow(n-1, n-1) - 1)*(n-1),一开始的苹果数可以通过循环n次res*n/(n-1) + 1可以得到。

题解1

class Apples {
public:
    int getInitial(int n) {
        int res = (pow(n-1, n-1)-1)*(n-1);
        for(int i=0;i<n;i++){
            res = res*n/(n-1) + 1;
        }
        return res;
    }
};

(pow(n-1, n-1) - 1)*(n-1)乘以n,除以n-1,再加1,循环n次可以得到pow(n, n) - n + 1,所以一开始的苹果数可以通过pow(n, n) - n + 1得出。

题解2

class Apples {
public:
    int getInitial(int n) {
        return pow(n, n)-n+1;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容