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(); }