为什么用bitset有2个TLE
查看原帖
为什么用bitset有2个TLE
237570
hy1089knigh楼主2021/9/12 10:25

RT

#include<iostream>
#include<cstdio>
#include<cmath>
#include<bitset>
using namespace std;
const int M=1e8;
//bool a[M+1];
bitset<M+1> a;
int prime[M/10];

int main()
{
//	freopen("a.in","r",stdin);
//	freopen("a.in","w",stdout);
	int n,i,j;
	cin>>n;
	int m=sqrt(n),k=n-1;
	for(i=2;i<=m;i++)
	{
		if(a[i]==0)
		{
			for(j=i*i;j<=n;j+=i)
			{
				if(a[j]==0)
				{
					a[j]=1;
					k--;
				}
			}							
		}
	}
	cout<<k;
	return 0;
}
2021/9/12 10:25
加载中...