WA7个点 求调
  • 板块P1621 集合
  • 楼主zhaozhenbo
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/14 09:38
  • 上次更新2025/1/14 15:09:04
查看原帖
WA7个点 求调
644008
zhaozhenbo楼主2025/1/14 09:38
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int fa[N];
bool f[N];
int a,b,p,ans;
int find(int x)
{
	return fa[x] == x ? x : fa[x] = find(fa[x]);
}
int main()
{
	cin >> a >> b >> p;
	ans = b - a + 1;
	for(int i = a;i <= b;i++)
	{
		fa[i] = i;
	}
	for(int i = 2;i <= b;i++)
	{
		if(!f[i])
		{
			if(i >= p)
			{
				for(int j = i * 2;j <= b;j+=i)
				{
					f[j] = true;
					if (j - i >= a && find(j) != find(j - i))
					{
						fa[find(j)] = find(j - 1);
						ans--;
					} 
				}
			}
			else
		    {
			    for(int j = i * 2;j <= b;j+=i)
			    {
				    f[j] = true;
			    }
            }
		}
	}
	cout << ans;
	return 0;
}
2025/1/14 09:38
加载中...