【5个砝码】

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

例如:

  用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数在后。可以假设用户的输入的数字符合范围1~121。

【解题思路提示】

  我们把已知的砝码序列记为:x1, x2, x3, x4, x5, x6 (这里多加一个标准砝码,为解题叙述方便)对于任意给定的重量x,如果刚好等于xi 则问题解决。否则一定会位于两个标准砝码重量的中间,不妨设为:xi < x < xj令 a = x – xi,  b = xj – x则,x 要么可以表示为: xi + a, 要么可以表示为: xj – b这样问题就归结为怎样表示出 a 或 b另一思路:对于每个xi,可以乘以一个系数ki,再求和。ki的数值无外乎:-1 0 1这样,因为标准砝码的数量的很少的,我们就可以多层循环暴力组合ki来求解。还有更“土气”但有效的思路:既然输入范围只有120左右,如果对每一种情况都做人工求解,只要列一个大表,等查询的时候,直接输出答案就好了啊!但…这似乎是个耗时的工程…

代码

#include <iostream>
using namespace std;
int weights[5]={1,3,9,27,81};
int main()
{int n;cin>>n;
//  a*1+b*3+c*9+d*27+e*81==n
//  a,b,c,d,e都属于(-1,0,1)for(int a=-1;a<=1;a++){for(int b=-1;b<=1;b++){for(int c=-1;c<=1;c++){for(int d=-1;d<=1;d++){for(int e=-1;e<=0;e++){if(a*1+b*3+c*9+d*27+e*81==n){if(e==1) cout<<81;if(d==1&&e==1) cout<<'+'<<27;if(d==1&&e==0) cout<<27;if(d==-1) cout<<'-'<<27;if(c==1&&(e==1||d==1)) cout<<'+'<<9;if(c==1&&e==0&&d==0) cout<<9;if(c==-1) cout<<'-'<<9;if(b==1&&(e==1||d==1||c==1)) cout<<'+'<<3;if(b==1&&e==0&&d==0&&c==0) cout<<3;if(b==-1) cout<<'-'<<3;if(a==1&&(e==1||d==1||c==1||b==1)) cout<<'+'<<1;if(a==1&&e==0&&d==0&&c==0&&b==0) cout<<1;if(a==-1) cout<<'-'<<1;}}}}}}return 0;
}

第十届 蓝桥杯样题 —— 5个砝码相关推荐

  1. 第十届 蓝桥杯样题 ——结果填空

    [结果填空题] 有趣的平方数 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身.除了625,还有其它的3位数有这个特征吗?还有一个!该数是:_____________ [参 ...

  2. 第十届 蓝桥杯样题 ——代码填空

    [c/c++组代码填空] 下列代码把一个串p复制到新的位置q.请填写缺少的语句:char* p = "abcde";char* q = (char*)malloc(strlen(p ...

  3. 第十届 蓝桥杯样题 —— 信用卡号验证

    [编程大题]信用卡号验证 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1 ...

  4. 第十届蓝桥杯c语言试题,第十届蓝桥杯真题编程题1-7解析(高级组).pdf

    scratch 少儿编程第十届蓝桥杯真题 7 大家好 ~今天我们来讲解 scratch 蓝桥杯第十届编程大题的第七道题. 同样,这道题也是非常有难度的一道题.一起来看一下吧 解析: 女孩的程序 1.在 ...

  5. 第十届蓝桥杯真题题解

    目录 一.组队(DFS) 二.年号字串(进制转换) 三.数列求值 四.数的分解 五.迷宫(BFS) 六.特别数的和(暴力) 七.完全二叉树的权值 一.组队(DFS) 题目描述 本题为填空题,只需要算出 ...

  6. 2019年第十届蓝桥杯真题python解答(更新中)

    1. 后缀表达式 首先要了解什么是后缀表达式: 后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则). 由于后缀表达式 ...

  7. 外卖店优先级 第十届蓝桥杯真题 C++

    题目描述: 原题链接 饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0. 每经过 1 个时间单位,如果外卖店没有订单 ...

  8. 第十届蓝桥杯真题-灵能传输

    题目 OJ https://www.lanqiao.cn/problems/196/learning/ 考点 前缀和.贪心 思路 题目意思就是希望通过灵能交换后使得不稳定度最小,假设对a[i]进行灵能 ...

  9. 2019年第十届蓝桥杯真题解析 | 特殊数【Python】

    [特别数的和] 题目描述 小明对数位中含有 2.0.1.9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1.2.9.10 至 32.39 和 40,共 28 个,他们的和是 5 ...

最新文章

  1. 超详细的Python matplotlib 绘制直方图 赶紧收藏
  2. (转)类库 框架 模式
  3. 将DataTable中的数据导入到数据库中
  4. 博士申请 | 上海交通大学叶南阳助理教授招收机器学习方向博士生
  5. [JavaWeb-MySQL]数据库的备份和还原
  6. C++ 一键关闭屏幕
  7. c++矩阵连乘的动态规划算法并输出_算法面试必修课,动态规划基础题型归纳(三)
  8. gbrl参数_grbl-0.9运行参数配置说明
  9. linux怎么删除代码库,是否有从代码库中删除第三方C和C库的好技巧或工具? (OS X或Linux)...
  10. httpd 中常见的状态码
  11. 使用节点或Express返回JSON的正确方法
  12. python自动化办公入门书籍-用Python自动办公,做职场高手(完结)
  13. ueditor去掉本地保存功能
  14. iis php 映射,iis添加php的模块映射
  15. AT&T拟利用电力线网络提供无线宽带服务
  16. 机器学习(3)特征提取2 -- 文本特征提取(包括中文文本特征提取)
  17. mysql gtidpurged_MySQL设置gtid_purged破坏AUTO_POSITION复制协议
  18. 供应链:WMS库内管理设计
  19. 树莓派Pico开发软件安装(Thonny)及烧录(flash)
  20. 【学堂上新】Unity UGUI 渲染 3D 对象详解

热门文章

  1. selenium+java的常使用的一些操作
  2. HDU 1043 Eight(八数码)
  3. HTML5 Drop API
  4. 三种Ext提交数据的方法(转)
  5. 职业化之可以固化的六个工作模式
  6. 使用Android应用调用WebService实现天气预报
  7. 替换用FTP传到Unix上的文件中的^M字符
  8. 测试计算机操作基础知识,计算机病毒基础知识测试
  9. idea git 过滤target_IDEA + maven 零基础构建 java agent 项目
  10. Java黑皮书课后题第10章:*10.17(平方数)找出大于Long.MAX_VALUE的前10个平方数。平方数是指形式为n^2的数