【笔试】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/713234/

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

(0)

大家都在看

  • Qt 建立带有子项目的项目,以及子项目之间的调用

    建立带有子项目的项目 选择 其他-> 子项目目录 然后根据指导下一步即可。 建立好项目之后,就可以往项目中添加各种子项目。 向项目中添加子项目 右键项目,选择 Library…

    技术杂谈 2023年5月31日
    0137
  • 如何做一个有质量的技术分享(转)

    分享信息并不难,大多数人都能做到,就算是不善言谈性格内向的技术人员,通过博客或社交媒体,或是不正式的交流,他们都能或多或少的做到。 但是如果你想要做一个有质量有高度的分享,这个就难…

    技术杂谈 2023年6月1日
    0111
  • Hadoop集群搭建的详细过程

    Hadoop集群搭建 一、准备 三台虚拟机:master01,node1,node2 时间同步 1.date&#x547D;&#x4EE4;&#x67E5;…

    技术杂谈 2023年7月11日
    093
  • 零成本搭建个人博客搭建篇

    为什么要搭建个人博客 尽管已经有很多成型的在线博客平台供大家使用(csdn,博客园,掘金等),但是它们都有一些很明显的弊端,例如账号以及博客内容受到监管,所有权不属于作者本人,对于…

    技术杂谈 2023年6月21日
    097
  • 霍金斯能量层级图解析

    https://www.jianshu.com/p/9069cc1a5c9d Original: https://www.cnblogs.com/dhcn/p/16355265.h…

    技术杂谈 2023年5月31日
    0121
  • MySQL删除重复数据

    重复数据如图所示 自关联,保留id最小的那一条,其它的都删除 DELETE t1 FROM invest_year t1, invest_year t2 WHERE t1.pro_…

    技术杂谈 2023年7月24日
    077
  • Apache手动安装教程及报错解决梳理

    下载地址(例):wget https://dlcdn.apache.org/httpd/httpd-2.4.54.tar.gz 创建安装目录:mkdir /usr/local/ap…

    技术杂谈 2023年7月10日
    077
  • 三大纪律八项注意

    https://baike.baidu.com/item/%E4%B8%89%E5%A4%A7%E7%BA%AA%E5%BE%8B%E5%85%AB%E9%A1%B9%E6%B3%…

    技术杂谈 2023年6月1日
    093
  • 这类注解都不知道,还好意思说会SpringBoot?

    不知道大家在使用Spring Boot开发的日常中有没有用过 @Conditionalxxx注解,比如 @ConditionalOnMissingBean。相信看过Spring B…

    技术杂谈 2023年7月23日
    074
  • 四大编程原则

    高内聚、低耦合原则: 让一个模块做到独立,做到精益求精,同时把模块间的耦合降到最低,不会因为动了一个模块,而导致其他模块出问题。 高内聚也就是:相似的东西放在一起;而低耦合:不一样…

    技术杂谈 2023年7月25日
    063
  • Mysql重复数据查询置为空

    前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空。 需求并不难,用程序代码循环处理就可以了…

    技术杂谈 2023年7月11日
    092
  • Phaser.js All In One

    Phaser.js All In One HTML5 Canvas 2D Game Engine Phaser.js https://phaser.io/ https://phas…

    技术杂谈 2023年6月1日
    070
  • 手写数据库连接池

    📕数据库连接池项目 一、项目意义 在设计前先了解一下数据库连接池的作用: 除了在服务器端增加缓存服务器缓存常用的数据 之外(例如redis),还可以 增加连接池,来提高MySQL …

    技术杂谈 2023年7月25日
    093
  • docker官方仓库下载镜像

    官方仓库镜像地址:https://hub.docker.com/search/ 以下载mysql为例 进入到详情页后我们看到有很多Tags 我们选择5.7.25版本进行下载 doc…

    技术杂谈 2023年7月10日
    091
  • Kubernetes 容器平台实战

    一、什么是Kubernetes? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署,自动扩缩容,维护等功能. 通过Kubernetes可以做到…

    技术杂谈 2023年7月11日
    076
  • 每天一个 HTTP 状态码 103

    103 Earyly Hints 是被用于在最终的 HTTP 消息前返回一些响应头… 103 Early Hints 103 Earyly Hints 是被用于在最终 …

    技术杂谈 2023年7月11日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球