萌新求助
查看原帖
萌新求助
726098
hytallenxu楼主2024/3/30 19:25

萌新求助以下代码的正确性,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;
}
2024/3/30 19:25
加载中...