40分求改
  • 板块P1621 集合
  • 楼主furina_1013
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/13 15:42
  • 上次更新2024/8/13 17:15:14
查看原帖
40分求改
794188
furina_1013楼主2024/8/13 15:42
#include<bits/stdc++.h>
using namespace std;
int a,b;
int p;
int pre[100005];//指向父亲
int find(int x)
{
	if(pre[x]==x)return x;
	return pre[x]=find(pre[x]);
}//查
int main(){
	cin>>a>>b;
	cin>>p;
	for(int i=a;i<=b;i++)pre[i]=i;//初始化
	int f,u;
	int ans=abs(b-a)+1;//有多少个堆
	for(int i=a;i<=b;i++)
	{
		for(int j=i+1;j<=b;j++)
		{
			f=find(i);
			u=find(j);
			if(f!=u)
			{
				if(__gcd(i,j)>=p)pre[f]=u,ans-=1;
			}
		}
	}//枚举查询
/*	for(int i=a;i<=b;i++)cout<<find(i)<<" ";
	cout<<endl;*/
	cout<<ans;
	return 0;
}
2024/8/13 15:42
加载中...