51Nod 1449 砝码称重 (二进制思想)
2024-10-08 10:07:07
现在有好多种砝码,他们的重量是 w0,w1,w2,... 每种各一个。问用这些砝码能不能表示一个重量为m的东西。
样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。
Input
单组测试数据。
第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。
Output
如果能,输出YES,否则输出NO。
Input示例
3 7
Output示例
YES 题解:如果让一些砝码表示m的话,只需要将m转化为w进制数,然后要求每一位不是0就是1,然而这里可以利用天平使m加上
一个由0、1组成的w进制数等于另一个由0、1组成的w进制数,也就是说,转换成了m可以表示成两个由0、1组成的w进制数的差.
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
const int N=;
const int mod=1e9+;
int w,m;
int main(){
scanf("%d%d",&w,&m);
while (m){
if (m%w==||m%w==) m=m/w;
else if (m%w==w-) m=m/w+;
else{
printf("NO\n");
return ;
}
}
printf("YES\n");
}
最新文章
- 在DigitalOcean云主机上搭建SVN服务器
- 「个人vim插件+配置」
- Python的getattr(),setattr(),delattr(),hasattr()
- 实战Django:官方实例Part6
- POJ 2446 Chessboard (二分图匹配)
- SharePoint 2010 自定义 字段 类型--------省市区联动
- ZOJ 2476 Total Amount
- SQL查询重复记录
- HTML友情链接代码
- 基于C#的Appium自动化测试框架(Ⅰ)
- 动态创建VIEW
- Java基础系列--冒泡排序
- 2019南昌网络赛G. tsy&#39;s number
- Python-100道练习题答案
- hql 语法详解
- Python自然语言处理笔记【一】文本分类之监督式分类
- mysql 时间类型精确到毫秒、微秒及其处理
- Python打包方法——Pyinstaller
- Android 自定义AlertDialog(退出提示框)
- linux内核分析 第五周 扒开系统调用的三层皮(下)
热门文章
- leaflet结合turf.js实现多边形分割(附源码下载)
- Java对象拷贝备忘
- LINUX下EFIBOOTMGR的使用,删除UEFI主板多余启动项和添加启动项
- 小白的linux笔记11:放弃gitbook,转战Sphinx
- MRAM技术进入汽车应用
- python三程
- JavaScript自学笔记(2)---function a(){} 和 var a = function(){}的区别(javascript)
- iptables技术入门
- spawn id exp6 not open
- MySQL 8 模式匹配