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