随笔分类 -  最小公倍数

摘要:题意很简单,就是给你一个数组大小为n的值从1到n,之后有m次操作,要么修改前面的数组中的某一项,要么是输出从x到y(包括边界)中的数与p互质的数的和。由于m很小(m<=1000)故,将修改的部分保存下来之后统计输出时,在判断修改的部分是否与p互质,若是要修改原来的,在修改现在的。注意,就是多次修改同一个地方,只记录最后一次。对于统计从x到y的与p互质数的和,有结果=数1到y的满足要求的结果-数1到x-1的满足要求的结果。而从1开始到n的数中与p互质的数的和的求法,就是个容斥原理的算法。剔除p中单个素因子的倍数,加上两个因子的倍数,接着在剔除三个素因子的倍数,直到所有的素因子结束。。/** 阅读全文
posted @ 2012-09-23 00:56 qingyezhu 阅读(342) 评论(2) 推荐(0)
摘要:#include<stdio.h>#include<math.h>#define LL long longLL a, b, x, y;LL gcd(LL p, LL q) { LL r = 1; while (r) { r = p % q; if (r) { p = q; q = r; } } return q;}LL solve() { LL i, te; b /= a; te = (LL) (sqrt(b * 1.0)); for (i = te; i >=... 阅读全文
posted @ 2011-10-11 19:13 qingyezhu 阅读(345) 评论(0) 推荐(0)
摘要:由题知:g(n)=sigma{phi(n/d)*n/d},d|nf(n)=(g(n)+1)/2由于欧拉函数的积性,phi(n*m)=phi(n)*phi(m),gcd(n,m)=1所以,n=pi(pi^ci)故g(n)=g(pi(pi^ci))。g(n)=pi(g(pi^ci)g(pi^ci)=sigma(phi(pi^ci)pi^ci)而对于phi(pi^ci)(pi-1)*(pi^(ci-1)至此就这题就解决了!我的代码:超时的代码:LL sumlcm(int n) { int te = 0, temp = n; LL sum = 0; if (n == 1) ... 阅读全文
posted @ 2011-07-29 17:16 qingyezhu 阅读(171) 评论(0) 推荐(0)