51 nod 1449 砝码称重
这个题,我一看!嗷!,原来是一个贪心题,很快啊,我看了看没有思路,队友A了,我大意了啊,没有闪,不然我肯定自己A。队友不讲武德,把我的51nod币用完了。希望队友耗子尾汁,好好反思,以后不要再犯这样的聪明,小聪明。
#include<bits/stdc++.h>
#define fp(i,a,b) for(int i=a;i<=b;i++)
typedef long long ll;
typedef double dl;
using namespace std;
const int maxn=2e5+7;
const ll M=1e9+7;
const int INF=0x3f3f3f3f;
ll w,m;
vector<int> ve;
void solve()
{
scanf("%lld%lld",&w,&m);
int flag=0;
while(m!=0)
{
int k=m%w;
//printf("k:%d\n",k);
if(m%w!=w-1&&m%w!=1&&m%w!=0&&m%w!=w-2)
{
flag=1;
break;
}
ve.push_back(m%w);
m/=w;
}
//cout<<"flag1"<<flag<<endl;
// for(int i=ve.size()-1;i>=0;i--)
// {
// cout<<ve[i];
// }
cout<<endl;
if(flag==0)
{
if(w-1==1) ;
else
{
for(int i=0;i<ve.size()-1;i++)
{
if(ve[i]==w-1&&ve[i+1]==1)
{
flag=1;
break;
}
}
}
//cout<<"flag1:"<<flag<<endl;
if(w-2==1||w-2==0) ;
else if(ve[0]==w-2) flag=1;
else if(flag==0)
{
for(int i=1;i<ve.size()-1;i++)
{
if(ve[i]==w-2&&((ve[i-1]!=w-1&&ve[i-1]!=w-2)||(ve[i+1]!=w-1&&ve[i+1]!=w-2&&ve[i+1]!=0)))
flag=1;
}
}
//cout<<"flag2:"<<flag<<endl;
}
if(flag) printf("NO\n");
else printf("YES\n");
}
int main()
{
//ios::sync_with_stdio(0);
//cin.tie(0),cout.tie(0);
//int T; scanf("%d",&T)
//for(int i=1;i<=T;i++)
solve();
}
