第六章 数学问题 -------- 6.1【巧用进制】天平称重问题

算法基础课第六章。解决一些问题。 算法在于自己的实践,在于时间的积累。是一个漫长的过程。我们备战蓝桥杯一个多月的时间,我了解到了只是基础真正的算法高手都在练习算法,因为算法真的能让你的大脑思维提升。这只是我训练的八章成果。算法的在于你要有计算机语言去执行你要实现的功能。面向对象的思维思考问题。... 阅读详情

 注意程序输出:+号代表放在左盘,-号放在右盘。

1、思路:

       联想二进制枚举,这里显然其实是一种三进制枚举。 这里本质上是选或不选的问题,就是要将砝码放左or放右即+or-表达式的问题。但是得到的三进制值是由0 1 2组成,不好准确的表达是选还是不选的问题,于是我们可以想办法把0 1 2变成1 0 -1。于是我们可以对三进制数2进行进位操作,然后在减1,这样就把三进制全部变成由1 0 -1组成的了。再转换成十进制解决问题。

  例如用户输入数字5,那么它的三进制为1 2,现在对2加1减1,得到2 -1,然后在对2加1减1,得到1 -1 -1,这样再转换成十进制为9-3-1。这样成功解决问题。

2、代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class 天平称重 {

    public static void main(String[] args) {
        //System.out.println(Integer.toString(1000000, 3));
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        // 转成3进制
        final String x = Integer.toString(N, 3);
        // 翻转后转成字符数组,方便进行进位操作
        char []arr = new StringBuilder(x).reverse().toString().toCharArray();
        // 容器放处理之后的0 -1 1
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]=='2') {
                list.add(0, -1);// -1插在开头
                if (i==arr.length-1) {
                    list.add(0, 1);// 最后一个字符,进位
                }else {
                    ++arr[i+1];  // 否则,对下一个数字加1
                }
            }else if (arr[i]==3) {
                list.add(0, 0);
                if (i==arr.length-1) {
                    list.add(0, 1);
                }else {
                    ++arr[i+1];
                }
            }else {
                // arr[i] - '0' 表达的是字符转数字
                list.add(0, arr[i] - '0'); // 为0或1的话,直接插入数组开头,
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i)==1) {
                sb.append("+").append((int)Math.pow(3, list.size()-i-1));
            }
            if (list.get(i)==-1) {
                sb.append("-").append((int)Math.pow(3, list.size()-i-1));
            }
        }
        System.out.println(sb.substring(1));
    }

}

3、结果:

 

 

eLabRadio软件无线电虚实结合仿真开发平台简介 在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。 阅读详情

相关推荐

国产大模型编程能力深度分析报告(2026年5月更新版)

2026年5月国产大模型编程能力报告显示,主流模型迎来重大升级。DeepSeek V4以1.6T参数创性能新高,Qwen3.6-Plus支持原生多模态编程,MiniMax M2.7转向闭源并优化Agent编码,Kimi K2.6成为商业化成熟的主力模型,GLM-5开源并涨价30%。阿里云百炼推出双轨订阅体系,区分团队和个人开发者需求。各模型在参数规模、上下文长度、性能表现和适用场景上各具优势,国产AI编程服务正加速向订阅制转型,成本效益显著提升。

Willin Wang 的全栈升级指南 1660

天平称重

        today,这道水题的大意为:输入三个整数数a,b(a≠b, a≤10000, b≤10000,c≤50000)(都可以无限取)和c,使a,b通过加或减得到c,输出最少要几个a,b,用n,m表示,且n+m要最小(这题每次有k组数据,以输入0 0 0为结束);      当我看到这道题时,第一个思路是模拟,就是n,m初值附0,然后枚举,这是个思路,代码如下: ​ #includ...

bianxuankai1的博客 1586

手把手教你用C语言实现GNSS卫星方位角计算(附RTKLIB风格代码解析)

本文详细介绍了如何使用C语言实现GNSS卫星方位角计算,包括从地固坐标系到站心坐标系的转换链条。通过RTKLIB风格的代码解析,展示了XYZ到ENU坐标转换的核心原理和C语言实现框架,帮助开发者掌握卫星方位角和高度角的计算技巧,适用于GNSS观测数据质量分析和精密定位算法开发。

weixin_30699915的博客 365

砝码称重 蓝桥杯 c++

2:放左边(我们规定左边为减);既然有减那就无法避免结果是负数的情况,可以对加绝对值,反过来思考也是最终的重量(左边大就可以看作左边减右边);最后一种为放右边,原有的重量加上本砝码的重量;你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN。对于所有评测用例,1≤N≤100,N 个砝码总重不超过 100000。能称出的 10 种重量是:1、2、3、4、5、6、7、9、10、11。第二行包含 N 个整数:W1,W2,W3,⋅⋅⋅,WN。对于 50% 的评测用例,1≤N≤15。

qq_67091326的博客 1492

ArcGIS Enterprise10.9.1的Windows安装部署

ArcGIS Enterprise10.9.1中Windows版本安装介绍。

qq_36250702的博客 2446

Aurora 8B/10B IP核介绍 —— Xilinx 技术文档Pg046

一、概述该IP核与用户接口之间支持AXI4-Stream协议,且基于ZYNQ SOC、A7、K7、V7以及UltraScale、UltraScale+系列FPGA的高速收发器(the high-speed serial transceivers)进行实现。多达 16 个连续绑定4 个连续绑定的 GTP 收发器framingstreaming以及全双工或单工加扰消扰CRC校验热插拔Aurora 8B/10B核心(图1-1)是一种可扩展的、轻量级的、用于高速串行通信的链路层协议;

qq_32147275的博客 1640

c++比赛题目自制天平

【代码】c++比赛题目自制天平。

lun__LJJ的博客 440

CATIA_DELMIA_V5R2019安装包下载及安装教程破解

CATIA_V5R2019/DELMIA_V5R2019安装包下载及安装教程破解

一只机械工装熊的博客 8391

#1612. 天平(scales)

题目描述 你拥有一个天平,需要验证一个质量为 nnn 的物品(不用遵守左物右码)。你只有质量为 1,4,16,64,256...1,4,16,64,256...1,4,16,64,256... ( 444 的非负整数次幂)的砝码,每种有无数个。 你希望用最少的砝码称量出质量 nnn ,并且只关心方案数模 10910^9109 是多少。 题解 将题意转化一下,也就是考虑把 nnn 拆分成 444 的...

Johnny817的博客 709

DNF服务器搭建服务端架设教程

第三步:打开winscp,上传Script.pvf(版本)、publickey.pem(密钥)、df_game_r(等级补丁)到home/neople/game目录下。第四步:打开putty输入./stop,./stop(两次,如果是首次架设不用./stop),./run,运行刚才上传的三个游戏文件。③是本地配置登录器的配置文件,自动生成,可以删除,但是还是会根据你生成的登录器生成这个文件,类似日志。⑤密钥中所上传的三个文件其中之一,重中之重,上传到服务器的密钥必须和登录器中的密钥为一个。

V13807970340的博客 6263

Vivado时序违例debug

显示了数据路径延迟。例如,对于违例路径,若布线延迟超过50%,说明该延迟是导致时序不能收敛的主要因素,因此可围绕降低布线延迟这一靶心达到时序收敛。对于跨时钟域路径,Requirement数值会有所变化,但如果数值为0.1,显然是不合理的。目的时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达SRLC32E移位寄存器,对应。源时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达FDRE触发器,对应。

weixin_44513618的博客 1622

巧用进制解决天平称问题《算法很美》

巧用进制解决天平称问题 天平称重:变种3进制 用天平称重时,我们希望佣金可能少的砝码组合称出尽可能多的重量。 如果有无限个砝码,但它们的重量分别是1,3,9,27,81,…等3的指数幂神奇之处在于用它们的组合可以称出任意整数重量(砝码允许放在左右两个盘中)。 本题目要求编程实现:对用户给定的重量,给出砝码组合方案,重量<1000000。 例如: 用户输入: 5 程序输出 9-3-1 思路: 输入了5对吧,将5变成3进制则为 “12”,然后将"12"反过来好算"21",进一位则为"121",搜如果是2变

罗彬桦的博客 434

【ArcGIS微课1000例】0149:Geographic Imager6.6下载安装教程

首先保证电脑上安装对应版本的PS软件,笔者安装的是PS2023(V24.7)版本,然后安装本软件。保持以上窗口运行状态,然后打开PS,自动弹出如下窗口。勾选【Automatically checkout LIcense】,点击Close。双击setup开始安装,点击【确认】,一路默认安装到底。驱动器:DVD-ROM驱动器(用于DVD版本)处理器:2GHz或更快的英特尔或AMD处理器。安装完成后,将Crack中的所有文件拷贝到。硬盘:600 MB的可用硬盘空间用于安装。内存:4GB内存(建议8GB或更高)。

智慧空间实验室 1221

第六章 数学问题(上)

1、巧用进制 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81 则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。 本题目要求编程实现:对用户给定的重量,给出砝码组合方案。 例如: 用户输入: 5 程序输出: 9-3-1 用户输入: 19 程序输出: 27-9+1 要求程序输出的组合总是大数在前小数...

h_666666的博客 377

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

每天一道编程题(十)---------java竞赛称砝码问题

用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。 例如: 用户输入: 5 程序输出: 9-3-1 用户输入: 19 程序输出: 27-9+1 输入: 41 输出: 81-27-9

wyj880220的专栏 2620

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝桥杯の天平称重

用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数在后。可以假设用户的输入的数字符合范围1~121。...

AIlfw的博客 554

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学与数字2:天平称重问题

这是一道典型的应用问题, 但内核就在进制问题的处理。题目要求是:用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果有无限个砝码,但它们的重量分别是1,3,8,27,81````等3的指数幂,神奇之处是用它们的组合可以称出任意整数的重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码的组合方案,重量<1000000. 先看一下这个题是什么意思,例如一个物体的重量是5,那么我们一个盘子放9,一个放1+3,然后将物体放在右侧,就可以得到物体的重量。其他的都能做类

纵横千里 捭阖四方 的专栏 1608

第六章 数学问题 -------- 6.9 天平称重问题【线性同余方程】青蛙的约会

模运算:   取模:计算除以m的余数,叫做对m取模   同余:将a,b对m取模的结果相同,记为a≡b(modm)(例如:x % 3 = 2 ===> x ≡ 2(%3),x余3等于2,和2同余),即 a mod m == b mod m 如果 a≡b(modm),且c≡d(modm),则有a+b≡c+d(modm) a*b≡c*d(mo...

Curtis’Blog 808

巧用三进制解决天平称重问题

1. 问题描述: 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果有无限个砝码,但它们的重量分别是1,3,9,27,81,……等3的指数幂 神奇之处在于用它们的组合可以称出任意整数重量(砝码允许放在左右两个盘中)。 本题目要求编程实现:对用户给定的重量,给出砝码组合方案,重量<1000000。 例如: 用户输入: 5 程序输出: 9-3-1 用户输入:...

二哈 1817

经典算法之天平称重问题(进制解法)

问题描述: 已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个 要求输出重量1到n的所有物品的称重方式 解题思路: 用字符串拼接结果 三进制的返回值为0 1 2 返回值为0则表示该权重不取 返回值为1表示加上该权重 返回值为2表示该权重需要加上两遍,不符合题意. 故需将其转换为-1减掉该位权重,对商进行改变. 如: 2 ÷ 3 - 2 ... 0   ==   -

striner的博客 6516

天平称重(巧用三进制)

分析:对砝码的放左放右,还是不放,可以最后用1,-1,0表示,类似于二进制的1表示放,0表示不放。 结果变化的时候利用进位的思想。当为2时接一位低位,进一位高位。 import java.util.ArrayList; import java.util.Scanner; public class Main { public static int n; ...

qq_42794545的博客 572

百度面试题——天平称重问题

问题描述: 用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的,使用x 次天平, 最多可以从y 个小球中找出较轻的那个,求y 与x 的关系式。 解题思想: 该题主要考查逻辑思维能力,我在首次遇见该题时,首先想到的对半拆分,找出其中较轻的一半,然后在进行对半拆分,如此循环直到找出较轻的小球。这样得出的y与x的关系式为y = 2^x。但是,这种拆分的方式忽略了另一种情形,那

qinghunya的专栏 7759

经典算法之天秤称重问题

问题描述: 已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个 要求输出1到n的所有物品的称重方式 解题思路: 物品重量 砝码 1 1 2 3 - 1 3 3 4  3 + 1 5 9 - 3 - 1 ... ... 经过对比发现,若物品重量刚刚超过了较大砝码的一

striner的博客 8931

天平称重变种3进制(巧用进制解决多状态选择问题)

问题描述 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量,如果有无限个砝码,但它们的重量分别是1,3,9,27,81,…等3的指数幂,神奇之处在于用它们的组合可以称出任意整数重量(砝码允许放在左右两个盘 中)。 本题目要求编程实现:对用户给定的重量,给出砝码组合方案,重量<1000000 例如: 用户输入 5 程序输出 9-3-1 思考 此问题类似01背包问题,不过此题每个数有...

小白的Coding之旅 718

【算法题】天平砝码称重

总结:天平有三种状态。左边,右边,平衡,因此天平问题一般是三进制 1.用最少的砝码称出1到100克的物品 给定一个天平,用最少的砝码称出1到100克的物品,砝码重量任选 假设物品放在右边,砝码可以放在左边或者右边,那么有:放在左边砝码的重量 = 放在右边砝码的重量 + 物品的重量,即 放在左边砝码的重量- 放在右边砝码的重量= 物品的重量。 假设砝码放在左边用‘+’表示,放在右边用‘-...

weixin_34068198的博客 993
上一篇: 【数学问题】最大公约数与最小公倍数
下一篇: 第六章 数学问题 -------- 6.2【Nim游戏】高僧斗法
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值