我太难了
查看原帖
我太难了
319803
CarroT1212楼主2020/6/14 16:21

本人刚接触OI,刚学埃式筛法,于是做了这题。

第一次因为忘记用埃式筛法,50分,五个点TLE,但是用了埃式筛法后变成了80分,最后两个点RE,代码:

#include <bits/stdc++.h>
using namespace std;
int e[10000001];
int main()
{
	long long a,b,c,d=0;
	cin>>a;
	for (b=2;b<=a;b++)
	{
		c=b-1;
		if (e[c]==0)
		{
			d++;
			for (int i=b*2;i<=a;i+=b)
			{
				e[i-1]=1;
			}
		}
	}
	cout<<d;
}

改成下面代码后却变成了10分:

#include <bits/stdc++.h>
using namespace std;
int e[10000001];
int main()
{
	long long a,b,c,d=0;
	cin>>a;
	for (b=2;b<=a;b++)
	{
		c=b-1;
		if (e[c]==0)
		{
			d++;
			for (int i=b*b;i<=a;i+=b)
			{
                                if (e[i]==0)
				e[i-1]=1;
			}
		}
	}
	cout<<d;
}

求大佬们帮看看哪里有问题,谢谢!

2020/6/14 16:21
加载中...