C. Vanya and Scales (进制转换)
2016-01-07 10:06
274 查看
C. Vanya and Scales
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Vanya has a scales for weighing loads and weights of masses w0, w1, w2, ..., w100 grams
where w is some integer not less than 2(exactly
one weight of each nominal value). Vanya wonders whether he can weight an item with mass m using the given weights, if the weights can
be put on both pans of the scales. Formally speaking, your task is to determine whether it is possible to place an item of mass m and
some weights on the left pan of the scales, and some weights on the right pan of the scales so that the pans of the scales were in balance.
Input
The first line contains two integers w, m (2 ≤ w ≤ 109, 1 ≤ m ≤ 109)
— the number defining the masses of the weights and the mass of the item.
Output
Print word 'YES' if the item can be weighted and 'NO' if it
cannot.
Sample test(s)
input
output
input
output
input
output
Note
Note to the first sample test. One pan can have an item of mass 7 and a weight of mass 3,
and the second pan can have two weights of masses 9 and 1,
correspondingly. Then 7 + 3 = 9 + 1.
Note to the second sample test. One pan of the scales can have an item of mass 99 and the weight of mass 1,
and the second pan can have the weight of mass 100.
Note to the third sample test. It is impossible to measure the weight of the item in the manner described in the input.
解题思路:把m转化为w进制,记M为m在w进制下的表示。
1、当M只由0、1组成时,明显,M 可由W进制表示,左边盘子放M ,右边盘子放相应1位置的砝码。
2、当M含有其它数字时,从低位到高位把非0、1的数字转化,使它的高位增加一,该位置数字减去W,
若值等于-1,则在M处再放置一个相应位的砝码;若值等于0(高位增一可为W),则不用放置。其它情况则为NO。
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Vanya has a scales for weighing loads and weights of masses w0, w1, w2, ..., w100 grams
where w is some integer not less than 2(exactly
one weight of each nominal value). Vanya wonders whether he can weight an item with mass m using the given weights, if the weights can
be put on both pans of the scales. Formally speaking, your task is to determine whether it is possible to place an item of mass m and
some weights on the left pan of the scales, and some weights on the right pan of the scales so that the pans of the scales were in balance.
Input
The first line contains two integers w, m (2 ≤ w ≤ 109, 1 ≤ m ≤ 109)
— the number defining the masses of the weights and the mass of the item.
Output
Print word 'YES' if the item can be weighted and 'NO' if it
cannot.
Sample test(s)
input
3 7
output
YES
input
100 99
output
YES
input
100 50
output
NO
Note
Note to the first sample test. One pan can have an item of mass 7 and a weight of mass 3,
and the second pan can have two weights of masses 9 and 1,
correspondingly. Then 7 + 3 = 9 + 1.
Note to the second sample test. One pan of the scales can have an item of mass 99 and the weight of mass 1,
and the second pan can have the weight of mass 100.
Note to the third sample test. It is impossible to measure the weight of the item in the manner described in the input.
解题思路:把m转化为w进制,记M为m在w进制下的表示。
1、当M只由0、1组成时,明显,M 可由W进制表示,左边盘子放M ,右边盘子放相应1位置的砝码。
2、当M含有其它数字时,从低位到高位把非0、1的数字转化,使它的高位增加一,该位置数字减去W,
若值等于-1,则在M处再放置一个相应位的砝码;若值等于0(高位增一可为W),则不用放置。其它情况则为NO。
#include <iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; #define LL __int64 #define N 550 int a ; int main() { LL w,m; int i,n; while(~scanf("%I64d%I64d",&w,&m)) { n=0; while(m) { a[n++]=m%w; m/=w; } int flag=1; for(i=0;i<n;++i) { if(a[i]==0||a[i]==1) continue; if(i==n-1) ++n; ++a[i+1]; a[i]-=w; if(a[i]==0||a[i]==-1) ; else { flag=0; break; } } printf("%s\n",(flag?"YES":"NO")); } return 0; }
相关文章推荐
- MTP in Android详解
- <html5+css3+js>javascript实现图片滚动播放功能
- 【LeetCode】104. Maximum Depth of Binary Tree(DFS|BFS)
- AFNetworking post json
- Apache-2.2.31编译安装
- oracle中查询所有用户表的表名、主键名称、索引、外键等
- [leetcode] 142. Linked List Cycle II 解题报告
- javascript中的原始值和复杂值
- 赵国灭亡的三大原因
- Citrix ICA协议之CGP会话可靠性
- iOS 调用系统 电话
- 点聚web office解决IE浏览器多个版本兼容问题
- Java杂记1--类与对象
- POJ 3468
- SQL 按特定字段值排序
- 文档加密保护有加密狗全解决:word加密
- React Native通信机制详解
- Python风格规范
- 词法分析、语法分析、语义分析
- ubuntu防火墙关闭命令-转