POJ2407 Relatives 容斥原理

题意:求1..n-1中与n互质的数的个数(1<=n<=1,000,000,000)。

可以转化为求1..n-1中不与n互质的数的个数t,然后用总数减去就可以了。

对于t的求法,我们可以考虑容斥原理。首先把n质因数分解,然后每个质因数只保留一个,随后按照x与n的公共质因子种类来将x分门别类地计算。例如60=2*2*3*5,那么有2、3、5三种质因子。对于所有符合t的要求的数x,满足是2的倍数的有60/2=30个,满足是3的倍数的有60/3=20个,满足是5的倍数的有60/5=12个。满足同时是2、3的倍数的有60/(2*3)个,满足同时是(2、5)的倍数的有60/(2*5)个……由于重复计算的缘故,我们假设同时满足是p1、p2、...pk的倍数的数的个数为s,那么k为奇数时s对答案的贡献为s,k为偶数时,s对答案的贡献为负。这样对于每一个满足条件的数x,可以证明它在所有分类中的贡献之和恰好为1.这样就算出了所有和n不互质的数的个数了。

#include <cstdio>
#include <cmath>
#define LL long long
#define rep(i,j,k) for (i=j;i<=k;i++) 
using namespace std;
const int N=1e5+5,Pn=30;
int pn,prime[N],notprime[N],fn,fac[Pn];
int n,i;
LL ans;
void Init()
{
	int i,j;
	rep(i,2,N-1)
	{
		if (!notprime[N]) prime[++pn]=i;
		for (j=i+i;j<N;j+=i) notprime[j]=1;
	}
}
void decompose(int n)
{
    fn=0;
	rep(i,1,pn)
	{
		if (prime[i]>(int)trunc(sqrt(n))) break;
		if (n%prime[i]) continue;
		fn++; fac[fn]=prime[i];
	    while (n%prime[i]==0) n/=prime[i];
	}
	if (n>1) fac[++fn]=n;
}
void DFS(int wh,int k,int bsc)
{
	int sgn,_bsc,_k;
	if (wh>fn) return;
	DFS(wh+1,k,bsc);  //不选当前质因子 
	_k=k+1; _bsc=bsc*fac[wh];
	if (_k%2) sgn=1;
	else sgn=-1;
	ans+=sgn*(n/_bsc);
	DFS(wh+1,_k,_bsc);
}
int main()
{
	#ifdef ONLINE_JUDGE
	#else
	      freopen("poj2407.in","r",stdin);
	      freopen("poj2407.out","w",stdout);
	#endif
	Init();
	while (1)
	{
		scanf("%d",&n);
		if (!n) break;
		decompose(n);
	/*	rep(i,1,fn) printf("%d ",fac[i]);
		printf("\n");
	*/	ans=0;
		DFS(1,0,1);
		printf("%d\n",n-ans);
	}
	return 0;
}


内容概要:本文详细介绍了如何使用Matlab对地表水源热泵系统进行建模,并采用粒子群算法来优化每小时的制冷量和制热量。首先,文章解释了地表水源热泵的工作原理及其重要性,随后展示了如何设定基本参数并构建热泵机组的基础模型。接着,文章深入探讨了粒子群算法的具体实现步骤,包括参数设置、粒子初始化、适应度评估以及粒子位置和速度的更新规则。为了确保优化的有效性和实用性,文中还讨论了如何处理实际应用中的约束条件,如设备的最大能力和制冷/制热模式之间的互斥关系。此外,作者分享了一些实用技巧,例如引入混合优化方法以加快收敛速度,以及在目标函数中加入额外的惩罚项来减少不必要的模式切换。最终,通过对优化结果的可视化分析,验证了所提出的方法能够显著降低能耗并提高系统的运行效率。 适用人群:从事暖通空调系统设计、优化及相关领域的工程师和技术人员,尤其是那些希望深入了解地表水源热泵系统特性和优化方法的专业人士。 使用场景及目标:适用于需要对地表水源热泵系统进行精确建模和优化的情景,旨在找到既满足建筑负荷需求又能使机组运行在最高效率点的制冷/制热量组合。主要目标是在保证室内舒适度的前提下,最大限度地节约能源并延长设备使用寿命。 其他说明:文中提供的Matlab代码片段可以帮助读者更好地理解和复现整个建模和优化过程。同时,作者强调了在实际工程项目中灵活调整相关参数的重要性,以便获得更好的优化效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值