小东分苹果
小东分苹果
http://www.nowcoder.com/questionTerminal/532d89889b974506a0805062fd1089fb
思路
- 暴力递归
从1计算到Integer.MAX_VALUE - 高等数学分析
再来看看数学上的表达:模拟这个过程,可以写出n个方程
y表示苹果数,由于令y最小化,可以用lagrange乘数法写出目标函数;
另一种观点是y表征在x的向量空间中,有
并且
所以可以考虑从特征空间上的角度求解; - 数论分析
上面给出了第i个方程;结合n方程看看,发现每一次都是n的倍数+1;
最后一项是
然后一顿推,不知道怎么推QAQ
最终:y=n^n-n+1
看到答案我就会推了,a^n-1=(a-1)(a^(n-1) +a^(n-2) + ...a+1)
y-1=n(n^(n-1)-1) 看看是不是很像QAQ
代码
import java.util.*; public class Apples { public boolean getInitial(int n,int k,int x){ if(k==0){return true;} if((x-1)%n!=0){ return false; } return getInitial(n,k-1,(x-1)*(n-1)/n); } public int getInitial(int n) { for(int i=1;i<=Integer.MAX_VALUE;i++){ if(getInitial(n,n,i)){ return i; } } return 0; } }