1449 砝码称重

题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

现在有好多种砝码,他们的重量是 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



//仔细分析一下,可以知道,如果不是天平,那么,就是只有 0 和 1 组成的 w 进制数,是否可以为 m
加了天平,就是问存不存在一对数相减得 w,那么,从最低位考虑起,是否可以组成即可,贪心
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 #define INF 0x3f3f3f3f3f3f3f3f
 5 #define LL long long
 6 #define MX 1005
 7 
 8 LL w,m;
 9 
10 int main()
11 {
12     scanf("%lld%lld",&w,&m);
13     int ok =1, pre=0;
14     while (m)
15     {
16         LL yu = m%w;
17 
18         if (yu - pre == 1)
19             pre = 0;
20         else if (yu - pre == w-1)
21             pre = -1;
22         else if (yu - pre == 0)
23             pre = 0;
24         else
25         {
26             ok=0;
27             break;
28         }
29         m/=w;
30     }
31     if (ok)
32         printf("YES\n");
33     else
34         printf("NO\n");
35 
36     return 0;
37 }
View Code

 




posted @ 2017-09-23 19:24  happy_codes  阅读(245)  评论(0编辑  收藏  举报