全局变量值莫名改变!
查看原帖
全局变量值莫名改变!
644112
Sinktank楼主2023/11/16 15:42

(开了O2)代码已经AC,但是一个很诡异的事情是,ans的值会在执行完欧拉筛后自己变成1,如果没有34行的手动初始化答案就会全部加1。求调,谢谢:)

--

#include<iostream>
#include<bitset> 
using namespace std;
int n,k,primes[80000000],cnt,a[25],b[25],ans;
bitset<100000000> vis;
void dfs(int start,int cnt){
	if(cnt<=0){
		int sum=0;
		for(int i=k;i>=1;i--) sum+=a[b[i]];
		if(!vis[sum]){
			ans++;
		} 
		return;
	}
	for(int i=start;i<n;i++){
		b[cnt]=i;
		dfs(i+1,cnt-1);
	}
}
int main(){
	vis[1]=1;
	//cout<<ans<<endl; //0
	for(int i=2;i<=100000000;i++){
		if(!vis[i]) primes[cnt++]=i;
		for(int j=0;j<cnt;j++){
			if(i*primes[j]>100000000) break;
			vis[i*primes[j]]=1;
			if(i%primes[j]==0) break;
		}
	}
	//cout<<ans<<endl; //1
	cin>>n>>k;
	for(int i=0;i<n;i++) cin>>a[i];
	ans=0;
	dfs(0,k);
	cout<<ans;
	return 0;
}
2023/11/16 15:42
加载中...