【京东2016研发工程师编程题】分苹果
来源:互联网 发布:windows平板镜像下载 编辑:程序博客网 时间:2024/06/05 15:22
/*时间限制:3秒空间限制:32768K果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔掉一个然后拿走一份,以此类推直到最后一头熊都是这样(最后一头熊扔掉后可以拿走0个,也算是n份均分)。问最初这堆苹果最少有多少个。给定一个整数n,表示熊的个数,返回最初的苹果数。保证有解。测试样例:2返回:3 */function appleNum(n) { // n是熊的个数 var i=1; var res=n*i+1; // res-1一定是n的整数倍 while (!isMin(n,res)){ res=n*i+1; i++; } return res;}// 判断m是否满足 均分、拿走后剩余苹果依然能够均分// m是总的苹果数function isMin(n,m) { var next=m; // next表示一只熊走后剩余的苹果,初始值设为m总的苹果数 if(Math.floor((m-1)%n)!==0) // 如果一开始m-1就无法均分,则m不满足题意(20170908update:这句可以不要,因为上面res的取值保证了(res-1)%n一定等于0) return false; for(var i=1;i<n;i++){ // 否则,看接下来n-1个熊能否把next-1个苹果均分 next=(next-1)*(n-1)/n; // 本次的苹果总数X[i+1]=X[i]-( X[i]/n + 1 ) ,整理一下有X[i+1]=(X[i]-1)*(n-1)/n if(Math.floor((next-1)%n)!==0) // 如果后续有一个不能均分,则m不满足题意 return false; } return true; // 如果上面的循环完毕,则说明后续的熊都能够均分苹果,m满足题意}console.log(appleNum(2)); // 3console.log(appleNum(3)); // 25console.log(appleNum(5)); // 3121console.log(appleNum(8)); // 16777209
阅读全文
0 0
- 【京东2016研发工程师编程题】分苹果
- 京东2016实习生研发工程师编程题
- 京东2016研发工程师编程题
- 年终奖(动态规划)---- 京东2016研发工程师编程题
- 苏宁2016研发工程师编程题
- 百度2016研发工程师在线编程题
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题
- 腾讯2016研发工程师编程题
- 网易2016研发工程师编程题
- 网易2016研发工程师编程题
- 网易2016研发工程师编程题 搜索
- 网易2016研发工程师编程题①
- 网易2016研发工程师编程题②
- 腾讯2016研发工程师编程题
- 网易2016研发工程师编程题
- 腾讯2016研发工程师编程题
- 网易2016 实习研发工程师编程题
- [leetcode] 53. Maximum Subarray
- 判断是否为回文字符
- python numpy模块/库
- linux权限-bash: ./startup.sh: Permission denied
- 关于集合的有意义的代码 —— (一)
- 【京东2016研发工程师编程题】分苹果
- PAT--1069. The Black Hole of Numbers
- Eclipse启动时使用低版本JDK的问题
- 个人模拟面试之基础知识
- 将动画效果用于网页制作
- CS R46 C(思维套路),D(好题,数据结构维护) E(???)
- 代码优化,常见总结
- 5. Longest Palindromic Substring
- on()的多事件绑定