【笔试】1、强迫卖家

小明是个强迫症卖家,有10000台设备,卖的均价要求最接近D元,输出卖出的台数N,总售价M  输入 0首先想得是暴力解答然后是二分查找,寻找卖出多少台才符合要求,但是一直找不到符合要求的条件,只知道接近D之后网上百度了一下答案,虽然解决方式不是二分查找,但是思想却是和二分查找差不多,这里做个记录
package y2020.interview.huawei.qiangpomaijia;

import java.util.Scanner;

/**
 * @Auther: xiaof
 * @Date: 2020/3/11 09:31
 * @Description:强迫卖家
 * 小明是个强迫症卖家,有10000台设备,卖的均价要求最接近D元,输出卖出的台数N,总售价M
 * 输入 0 幸运数D,则台数(分母)增加。
 * 如果均价 */
public class Main {

    //3.14159265358979 不符合  错误答案
    public static long[] solution(double d) {
        //因为是1到10000台
        long[] res = {1, (int)d};
        double min = Double.MAX_VALUE;
        for (int i = 10000; i >= 1; --i) {
            double curM = i * d;
            //取整
            double preM = (i - 1) * d;
            double dir = curM - preM;
            if (dir < min) {
                min = dir;
                res[0] = i;
                res[1] = (long) (i * d);
            }
        }

        return res;
    }

    //网上大神思路
    public static int[] solution2(double d) {
        //因为是1到10000台
        int m = 1, n = 1, resm = 0, resn = 0;
        double dif = Double.MAX_VALUE;
        while (m < 100000 && n ) {
            if (Math.abs(m / (n * 1.0) - d) < dif) {
                //如果范围比这小
                resm = m; resn = n;
                dif = Math.abs(m / (n * 1.0) - d);
            }

            if ((m / (n * 1.0) - d) > 0) {
                //如果结果单价大了,那么就加大分子,也就是总价
                n++;
            } else {
                //大了,那就提高分母
                m++;
            }
        }
        return new int[]{resm, resn};
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double d = scanner.nextDouble();

        int[] res = solution2(d);
        System.out.println(res[1] + " " + res[0]);

    }

}

Original: https://www.cnblogs.com/cutter-point/p/12467801.html
Author: cutter_point
Title: 【笔试】1、强迫卖家

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570658/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java的三大特性

    Java的三大特性 封装: 隐藏内部功能的具体实现,只保留和外部交流数据的接口,将变化隔离,便于使用,提高复用性和安全性。例:汽车与发动机,不必知道发动机的实现原理,只需使用汽车给…

    Java 2023年6月13日
    067
  • 实习第二周

    实习第八天 我陷入了一种假期结束要上班的前一天晚上,我就会非常焦虑。很担心上班的时候发生一些什么状况,假期的时候躺在床上就想如果现在在学校该多好,在自己熟悉的环境里,干什么都轻轻松…

    Java 2023年6月5日
    093
  • 线程池如何观测?这个方案让你对线程池的运行情况了如指掌!

    今天我们来聊一个比较实用的话题,动态可监控可观测的线程池实践。 这是个全新的开源项目,作者提供了一种非常好的思路解决了线程池的可观测问题。 这个开源项目叫: DynamicTp 地…

    Java 2023年6月8日
    089
  • 6、lamda表达式

    lamda表达式: 1、避免匿名内部类过多 2、让代码简洁 3、去掉没有意义的代码,保留核心逻辑 函数式接口:只包含一个抽象方法,被成为函数式接口 java;gutter:true…

    Java 2023年6月8日
    078
  • Kafdrop

    Kafdrop 是一个用于查看 Kafka 主题和浏览消费者组的 Web UI docker run -d –rm -p 9000:9000 \ -e KAFKA_BROKERC…

    Java 2023年6月7日
    089
  • Nginx核心知识100讲学习笔记(陶辉)详解HTTP模块(详解11阶段)

    一、server_name指令 1、指令后可跟多个域名。第一个是主域名 bash;gutter:true; Syntax server_name_in_redirect on | …

    Java 2023年5月30日
    077
  • oracle踩坑

    好久没有写博客了,就分享一些乱七八糟的东西吧! 1.oracle递归查询 大家应该使用有的时候会使用递归查询数据库菜单的吧,比如下面这样的(偷的图)( ̄▽ ̄)ノ 这种一般是业务管理…

    Java 2023年6月6日
    0100
  • 基于Redis实现延时队列服务

    背景 在业务发展过程中,会出现一些需要延时处理的场景,比如: a.订单下单之后超过30分钟用户未支付,需要取消订单b.订单一些评论,如果48h用户未对商家评论,系统会自动产生一条默…

    Java 2023年6月7日
    061
  • MySQL基础

    DQL 查询完整语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段 limit…

    Java 2023年6月14日
    082
  • Mac启动SpringBoot InetAddress.getLocalHost() 执行很慢

    scutil –set HostName “localhost” 参考: https://blog.csdn.net/fngang/articl…

    Java 2023年5月30日
    077
  • NGINX转发端口后却跳转到80端口的解决方法

    问题原因: nginx没有正确的把端口信息传送到后端,没能正确的配置nginx,下面这行是关键 proxy_set_header Host $host:$server_port; …

    Java 2023年5月30日
    071
  • 注入属性文件的值

    按照以往的方式,我们总是直接把具体的字面量值填入代码进行字面量值的注入。如下所示: 可以看到Music定义了三个属性。其值直接填在代码里,由@Value注解注入。直觉告诉我们,这种…

    Java 2023年6月5日
    087
  • 《深入理解Java虚拟机》并发(第12~13章)笔记

    volatile关键字的作用 所有变量的可见性——仅仅是修改后的值的可见性,不保证并发修改时新值和预期一致。即只保证读,不保证写。 禁止指令重排序——修饰的变量,读写不会指令重排。…

    Java 2023年5月29日
    069
  • java 动态代理

    一:动态代理: 1.JDK动态代理(接口方式) 介绍:使用java反射包中的类和接口实现动态代理的功能,反射包:java.lang.reflect,里面有三个类:Invocatio…

    Java 2023年6月5日
    093
  • 【踩坑日记】Druid连接池在MySQL主备切换时引发高可用问题

    背景 由于MySQL供应商内部升级,线上数据库需要主动进行主备切换。切换基于SIP漂移,理论上是毫秒级闪断。但在实际模拟演练的过程中,除了预期内切换瞬间产生的连接异常外,后续半个小…

    Java 2023年6月5日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球