JavaScript趣题:买车子
2016-09-11 09:31
204 查看
小王有一台很旧的车,大概值2000块钱,而且很容易出手。
他看中了一台价值8000块的二手车,想在存够钱后买下它。
他估摸着每个月能存1000块钱。
他现在的车和那台二手车,每个月都会降价,最开始是降1%,然后每隔两个月,降价幅度都会增加0.5%。
比如,第一个月会降价1%,第二个月就降了1.5%,第三个月就还是降了1.5%,第四个月是2%。
换句话说,逢单月降价幅度和前一个月一样,逢双月,降价幅度比前一个月加0.5%。
你能帮帮他吗?
他至少得存多少个月的钱才能买下这部二手车?那时他买车后还可以剩下多少钱?
函数原型如下:
nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth)
分别对应:旧车价格,二手车价格,每月存款定额,第一个月降幅
例子:
nbMonths(12000, 8000, 1000, 1.5) // [0, 4000]这种情况,旧车比二手车价值还高些,那还用等啥?直接买呗!还能赚个4000块!
nbMonths(8000, 8000, 1000, 1.5) // [0, 0]这种情况,直接以旧换新,两两相抵了。
nbMonths(2000, 8000, 1000, 1.5) // [6, 766]这种情况,得花上6个月,最后结余还剩766.158...等一串小数,四舍五入得766块。
这道题目,很简单的加减乘除,但诸位不要想太多了,比如存银行吃利息这样的主意~
好了,直接上代码了:
function nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth){
percentLossByMonth /= 100;
var months = 1;
var percentLossIncrement = 0.005;
var alreadyHaveMoney = 0;
while(startPriceOld + alreadyHaveMoney < startPriceNew){
if(months % 2 === 0){
percentLossByMonth += percentLossIncrement;
}
startPriceOld *= (1 - percentLossByMonth);
startPriceNew *= (1 - percentLossByMonth);
alreadyHaveMoney += savingperMonth;
months++;
}
return [months-1,Math.round(startPriceOld + alreadyHaveMoney - startPriceNew)];
}
他看中了一台价值8000块的二手车,想在存够钱后买下它。
他估摸着每个月能存1000块钱。
他现在的车和那台二手车,每个月都会降价,最开始是降1%,然后每隔两个月,降价幅度都会增加0.5%。
比如,第一个月会降价1%,第二个月就降了1.5%,第三个月就还是降了1.5%,第四个月是2%。
换句话说,逢单月降价幅度和前一个月一样,逢双月,降价幅度比前一个月加0.5%。
你能帮帮他吗?
他至少得存多少个月的钱才能买下这部二手车?那时他买车后还可以剩下多少钱?
函数原型如下:
nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth)
分别对应:旧车价格,二手车价格,每月存款定额,第一个月降幅
例子:
nbMonths(12000, 8000, 1000, 1.5) // [0, 4000]这种情况,旧车比二手车价值还高些,那还用等啥?直接买呗!还能赚个4000块!
nbMonths(8000, 8000, 1000, 1.5) // [0, 0]这种情况,直接以旧换新,两两相抵了。
nbMonths(2000, 8000, 1000, 1.5) // [6, 766]这种情况,得花上6个月,最后结余还剩766.158...等一串小数,四舍五入得766块。
这道题目,很简单的加减乘除,但诸位不要想太多了,比如存银行吃利息这样的主意~
好了,直接上代码了:
function nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth){
percentLossByMonth /= 100;
var months = 1;
var percentLossIncrement = 0.005;
var alreadyHaveMoney = 0;
while(startPriceOld + alreadyHaveMoney < startPriceNew){
if(months % 2 === 0){
percentLossByMonth += percentLossIncrement;
}
startPriceOld *= (1 - percentLossByMonth);
startPriceNew *= (1 - percentLossByMonth);
alreadyHaveMoney += savingperMonth;
months++;
}
return [months-1,Math.round(startPriceOld + alreadyHaveMoney - startPriceNew)];
}
相关文章推荐
- JavaScript趣题:形参和实参的映射
- JavaScript趣题:波浪形排序
- JavaScript趣题:依赖注入
- JavaScript趣题:字符串排序
- JavaScript趣题:前端分页
- JavaScript趣题:分解质因数
- JavaScript趣题:链表的归并排序
- JavaScript趣题:有序列表
- JavaScript趣题:大整数字符串相加
- JavaScript趣题:全排列去重
- javascript趣题(高人若知道script有什么奇怪的用法或令人费解的地方,务必留下片言碎语,不胜感激!)
- JavaScript趣题:函数克隆
- JavaScript趣题:密码验证
- JavaScript趣题:计算方差
- JavaScript趣题:缺水危机
- JavaScript趣题:建房子
- JavaScript趣题:统计二进制
- JavaScript趣题:点、线、面
- JavaScript趣题:减肥俱乐部
- JavaScript趣题:字符串是否由字母或数字组成?