zoukankan      html  css  js  c++  java
  • 数学 —— 巧用进制

    例题 天平称重:变种三进制

    用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。

    如果有无限个砝码,重量分别是1,3,9,27,81,……等3的指数幂,
    神奇之处在于用它们可以称出任意整数重量(砝码允许放在左右两个盘中)。

    本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
    用户输入:

    5

    程序输出:

    9-3-1

    用户输入:

    19

    程序输出:

    27-9+1

    要求程序输出的组合总是大数在前小数在后。

    可以假设用户的输入的数字符合范围1~121。

    思路

    1, 3, 9, 27, 81,……
    30,31,32,33,34,……
    联想到用3进制解决问题。

    假设是二进制:
    1,2,4,8,……
    假设要称重量为10的物品,10转换为二进制是1010,代表取2和8两个砝码就能称出10,11转换为二进制是1011,代表取1、2和8三个砝码就能称出11,……

    如果把5转换为3进制为12,1代表要取一个重量为3的砝码,2代表要取两个重量为1的砝码,但是题目中并没有说可以用多个砝码。

    如果把5转换为变种3进制可以表示为(2,-1)3=(1,-1,-1)3,这样就能够表示为题目中给出的9-3-1。

    二进制代表了两种状态,取或不取,但是三进制代表了三种状态,放在左盘、不取、放在右盘。

    对于要称重的数,先转换为3进制 ,然后翻转(放置越界),之后转成字符数组,扫描;如果遇到2就将其自己变成-1,下一位+1;如果遇到22的情况就将2变成-1,下一位变成0,后面一位+1;最后,恢复成10进制。

  • 相关阅读:
    机器学习---14
    机器学习---13
    机器学习--10
    机器学习--9
    机器学习--8
    机器学习--7
    机械学习--6
    大数据应用技术课程实践--选题与实践方案
    15.手写数字识别-小数据集
    14.深度学习-卷积
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338378.html
Copyright © 2011-2022 走看看