51NOD 1449 砝码称重(贪心+进制思想)
来源:互联网 发布:windows 10 ie10 编辑:程序博客网 时间:2024/06/05 04:46
题目连接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1449
1449 砝码称重
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
现在有好多种砝码,他们的重量是
样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。
Input
单组测试数据。第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
Output
如果能,输出YES,否则输出NO。
Input示例
3 7
Output示例
YES
简单的中文, 不简单的思想;
刚开始 我认为可以 母函数的思想, 把能凑出来的数都枚举出来,然后看看m 在不在里面,但是, 数据量过大,不好控制,
后来,和我说 用进制的思想, 类似于2进制 10 进制 只有0 1这样 来考虑
也就是说 我们把 m, 转换成 w进制的 一个数, 当 余数是 0 1 的时候 即, m 一定 能用w 来表示, 当m 与 w 之间 缺个1 就好比 9 与10 缺一 89 与100 后面的9 与10 缺1
这样是 我们可以通过加1 个或2 个 来做成平衡, 但是 当为其他情况时 差距超过2 时 无法用w 来表示;就是no
#include <iostream>#include <queue>#include <stdio.h>#include <cstring>#include <algorithm>#include <string>#include <cmath>using namespace std;int main(){ int w,m; while(~scanf("%d %d",&w,&m)) { int flag=0; while(m) { if(m%w==0||m%w==1)// 能用w 来表示 { m/=w; } else if((m+1)%w==0)//如果补1 后可以余除 { m=(m+1)/w; //补1 } else { printf("NO\n"); flag=1; break; } } if(!flag) printf("YES\n"); } return 0;}
阅读全文
0 0
- 51NOD 1449 砝码称重(贪心+进制思想)
- 51 nod 砝码称重(贪心+进制转换思想)
- 51nod 1449 砝码称重,贪心
- 51nod1344-贪心&进制思想&好题-砝码称重
- 51nod 1449 砝码称重 (二进制思想)
- 51NOD 1449——砝码称重(贪心算法)
- 51nod 1449 砝码称重(经典贪心+进制)
- 51nod 1449:砝码称重
- 51nod 1449 砝码称重
- 51nod 1449 砝码称重
- [51nod 1449]砝码称重
- 51NOD 1449 砝码称重
- 51nod 1449 砝码称重
- 51nod 1449 砝码称重
- 1449 砝码称重 51NOD
- 51nod-1449-砝码称重
- 51node-1449 砝码称重(进制思想)
- 51Nod 砝码称重
- Android热更新方案Robust——美团热更新(热修复)使用介绍
- 关于学习java后台的流程图
- Hadoop-2.7.3常见问题解决
- 在庙堂和江湖都是毁誉参半的北凉
- DM8127/DM8148图像算法移植
- 51NOD 1449 砝码称重(贪心+进制思想)
- CentOS 7 yum安装配置mysql
- QT QML初体验随笔之QQuickView(3)
- Hive中如何快速的复制一张分区表(包括数据)
- winform 读取PC主板序列号
- zabbix 监控redis
- Kotlin入门学习
- Linux下redis的安装
- 一个菜鸟的头文件总结(浅显易懂)