Codeforces 552C Vanya and Scales(思路)

时间:2023-03-09 14:31:05
Codeforces 552C Vanya and Scales(思路)

题目大概说有101个质量w0、w1、w2、...、w100的砝码,和一个质量m的物品,问能否在天平两边放物品和砝码使其平衡。

哎,怎么没想到。。注意到w0、w1、w2、...、w100——

把m转化成w进制数,枚举每一位:

  • 如果第i位是0那OK;
  • 如果是1那就要把砝码wi放在天平另一边抵消;
  • 如果是w-1那就要把砝码wi放到天平同一边,使其变为0并进位,这时第i+1位的权+1;
  • 而如果是其他情况,那么肯定不能平衡了。
 #include<cstdio>
#include<cstring>
using namespace std;
int wi[];
int main(){
int w,m;
scanf("%d%d",&w,&m);
for(int i=; m; ++i){
wi[i]=m%w;
m/=w;
}
bool flag=;
for(int i=; i<=; ++i){
if(wi[i]>=w){
int t=wi[i];
wi[i]=w%t;
wi[i+]+=w/t;
}
if(wi[i]!= && wi[i]!= && wi[i]!=w-){
flag=;
break;
}
if(wi[i]==w-){
++wi[i+];
}
}
if(flag) puts("YES");
else puts("NO");
return ;
}