2018网易秋招内推笔试题——独立的小易

【题目】

小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。 

输入描述:
输入包括一行,四个整数x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割

输出描述:
输出一个整数, 表示小易最多能独立生活多少天。

输入例子1:
3 5 100 10

输出例子1:
11

【题目解析】
这道题很简单,其实就是一个简单的初中数学应用题。但是有一个坑一定要注意,当时就是踩到这个坑里了,一直都是只有90%通过。这个坑就是浮点数的计算精度问题。 Math.floor((d-f*x)/(p+x)) + f Math.floor((d-f*x)/(p+x) + f) 的计算结果是不一样的。先进行加法时,浮点数的计算精度会丢失,如1000000000+0.9999999999 = 1000000001。因此应该先对除得的结果进行向下取整达到整数,再和另一个整数相加。
【代码实现】
var line = readline().split(" ");
var x = parseInt(line[0]);  //每天的租金
var f = parseInt(line[1]);  //已有水果数
var d = parseInt(line[2]);  //现有现金
var p = parseInt(line[3]);  //每个水果的价钱
var total = Math.floor(d/x);  //如果所有的钱都用来付租金,可以生存的天数
var max = 0;
if(total <= f) {
    max = total; 
} else {
    max = Math.floor((d-f*x)/(p+x)) + f;  //(有个坑在这儿)
}
print(max);


以上所有仅为个人的解题思路,如果有问题或更好的解题方法,欢迎大家提出。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值