美文网首页
2019-02-26 独立的小易- 2018年网易校招

2019-02-26 独立的小易- 2018年网易校招

作者: 做梦枯岛醒 | 来源:发表于2019-02-26 14:35 被阅读13次

终于又开了一篇,自从查完考研成绩后一直在忙复试的刷题事情,因为查完成绩之后比预估的高40多分,看看别人的成绩觉得还有一丝希望,所以就准备一下复试了,这篇文章对应的这道算法题其实是在查成绩之前就写完的,一直拖到现在才写。

一. 题目

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

这道题来自于牛客网https://www.nowcoder.com/questionTerminal/a99cdf4e2f44499e80749699cc2ec2b9

示例参考

二. 分析

这个题其实说白了是一道数学题,然后我在做的时候比较绕弯子,最后就被绕进去了。
后来我就想,既然水果也是财产,能不能把它卖掉换成钱,然后再用这些钱来付房租的反面思想,结果我忽略了一个问题,就是这个水果也是每天必须的,要是有某种情况,水果没了,房租还付的起,就没法继续下一天了,所以这个思路是错误的。(但事实证明这个方法是对了一半,所以测试的时候有的栗子就通过了,有的就没通过)

最后参考了别人的想法。
因为我实在是想不到要怎么算。

下面是代码

import java.io.*;
public class Main{
    public static void main(String[] args) throws Exception{

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String s = bf.readLine();
        String[] sv = s.split(" ");
        int rent = Integer.parseInt(sv[0]);
        int fruit = Integer.parseInt(sv[1]);
        int money = Integer.parseInt(sv[2]);
        int price = Integer.parseInt(sv[3]);
    
       
        System.out.println(rent * fruit > money ? money / rent : (money - rent * fruit) / (rent + price) + fruit);
      
    }
}

前面是输入,不说了,最后输出的是一个很乱的三目表达式,说是装逼也不算装逼,就是觉得这样写简洁一点,下面我们来分解一下。

  System.out.println(rent * fruit > money ? money / rent : (money - rent * fruit) / (rent + price) + fruit);

这个结果算的是

如果rent * fruit 大于 money 就输出  money / rent
否则就输出 (money - rent * fruit) / (rent + price) + fruit

那为什么会有这种操作呢?主要是因为上面这个“数学题”会有两种情况。

  • A:带的水果很多,吃到没钱付房租
  • B:带的水果不是很多,最后没钱买水果和付房租

第一种情况,租金rent * 水果数量(fruit)大于 所带的钱(money),属于A这种,因为水果太多了,每天付租金,付到某天钱付完了都没有把水果吃完。那他返回的结果,当然是money / rent

第二种情况,水果带的不够,也就是租金rent * 水果数量(fruit)小于 所带的钱(money),太有钱了,老子是土豪,水果吃完了活了fruit天还有钱,还得去买水果那种,就是输出 (money - rent * fruit) / (rent + price) + fruit。
仔细看看上面这个表达式,是带的钱减去带的水果吃完之前那几日的房租,除以水果吃完后的买水果加上房租的日均价,最后别忘了加上最开始存活的这几天。

这样看来,其实这个题就是一个数学题。

3.运行

由于继续采用了inputstream的骚操作,我们的代码依然控制在很乐观的速度之内。

4.秀儿操作

日常分享大神操作,由于这个题基本上思路比较固定,所以没怎么有惊艳的代码,下面分享一下我那个实现一半的想法吧。

下面是西安工程大学的神山极客童鞋写的代码。
他就用到了卖掉水果的思想。

链接:[https://www.nowcoder.com/questionTerminal/a99cdf4e2f44499e80749699cc2ec2b9](https://www.nowcoder.com/questionTerminal/a99cdf4e2f44499e80749699cc2ec2b9)
来源:牛客网

//只有两种情况,已有水果个数比现有的钱除以房钱的次数多,此时以开房天数来算,
 //否则,就把水果卖了换钱,再用钱除以水果加房钱总和 
#include using namespace std; 
int main() { 
        long x, f, d, p;
       cin >> x >> f >> d >> p; 
       long day;
       if (d / x > f)
          day = (d + p * f) / (x + p); 
      else 
          day = d / x; 
      cout << day << endl; return 0;
 }

可以看到仅仅是 day = (d + p * f) / (x + p) 有所不同,总金额变成了d + p * f。

相关文章

  • 2019-02-26 独立的小易- 2018年网易校招

    终于又开了一篇,自从查完考研成绩后一直在忙复试的刷题事情,因为查完成绩之后比预估的高40多分,看看别人的成绩觉得还...

  • YY系列--微信群,社群

    昨晚在朋友圈看到朋友分享的2017网易校招的笔试题,产品岗的,网易是5个主观题没有选择题,朋友自己评论自己想找人探...

  • 《鹅厂wo谈会》观看笔记(上)

    行业标杆的校招也是行业标杆。就目前的感受,网易比较活泼,阿里严谨但是好像不太校招、腾讯超贴心给模拟测试,还有这个节...

  • 网易Java社招面经34题,助你“大展拳脚”!

    我记得之前有网友投稿过一篇网易的,忘记了是校招还是社招的面经了。今天又来了,这次是网易的Java社招面经 面试题 ...

  • 2016 我的校招经历与经验

    前言 我的校招今年结束得比较早,主要是因为拿的都是 9 月初提前批的 offer。今年的校招我拿了网易,阿里的 o...

  • 网易是如何进行校招的

    一、以"笑招组"打造【亲民】品牌形象 对外,网易一直称呼自己为"笑招组"。首先,笑招和校招同音,和校园招聘的本...

  • 网易校招研发工程师模拟笔试题(二)

    上一篇: 网易校招研发工程师模拟笔试题 上一篇和这一篇均是网易2015年秋招笔试题,牛客网作为本次春招模拟题使用,...

  • 网易校招(前端编程)

    三道编程 前2道AC,第三道刚一看题,心中窃喜(昨天京东笔试题类似),结果一做,瞬间蒙逼.1.魔法币(AC)//思...

  • 怎么理解产品经理

    近来校招面试颇为频繁,时常会被问到–谈谈你怎么理解产品经理 因为Dream在网易,所以搜集了很多网易PM的分享,其...

  • 前端校招经验分享

    前言 本文是饥人谷任务班学员的校招经验分享,该同学目前正在网易游戏实习,一些小小经验,希望对之后参加校招的小伙伴有...

网友评论

      本文标题:2019-02-26 独立的小易- 2018年网易校招

      本文链接:https://www.haomeiwen.com/subject/bgdayqtx.html