http://codeforces.com/problemset/problem/552/C
/**
CF 552C 进制转换
题目大意:给定一个天平,砝码的重量为w的0~100次幂,每种砝码只有一个,砝码可以放在左盘或者右盘。给定物品的重量m,问是否有一种方案让天平两端平衡
解题思路:把m化为w进制,改进制数只能有0,1或者w-1,若为w-1那么相当于在物品所放的盘里加一个砝码,然后在另一盘加上w倍的砝码即可。直接w进制数当前位
清0,将下一位+1即可。最后看w进制数是否正好是一个01串即可
*/
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
using namespace std;
int bit[40],n,m;
int main()
{
while(~scanf("%d%d",&n,&m))
{
int k=0;
memset(bit,0,sizeof(bit));
while(m)
{
bit[k++]=m%n;
m/=n;
}
int flag=1;
for(int i=0;i<k;i++)
{
if(bit[i]>=n)
{
bit[i]-=n;
bit[i+1]++;
}
if(bit[i]==n-1)
{
bit[i]=0;
bit[i+1]++;
}
else if(bit[i]>1)
{
flag=0;
break;
}
}
if(flag==0)
puts("NO");
else
puts("YES");
}
return 0;
}