萌新求助以下代码的正确性,VP的时候不知道怎么搞的,乱搞就过了。
#include <bits/stdc++.h>
using namespace std;
bool dp[100010];
void solve(){
int c;
cin>>c;
cout<<(dp[c]==1?"YES":"NO")<<"\n";
}
int bin(int x){
char s[32];int top=0,ans=0;
while(x!=0){
s[top++]=(x%2+'0');
x/=2;
}
for(int i=top-1;i>=0;i--){
ans*=10;
ans+=(s[i]-'0');
}
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(nullptr);cout.tie(nullptr);
vector<int> arr,brr;
for(int i=1;i<=32;i++){
arr.push_back(bin(i));
dp[bin(i)]=1;
}
for(int i:arr){
for(int j:arr){
if(i*j<=100000){
dp[i*j]=1;
brr.emplace_back(i*j);
}
}
}
for(int i:brr){
arr.emplace_back(i);
}
for(int i:arr){
for(int j:arr){
if(i*j<=100000)dp[i*j]=1;
}
}
int t;
cin>>t;
while(t--) solve();
return 0;
}