文章分类 -  acm数论-容斥原理

hdu4407 n(n<=400000)个数,a[i]=i,m个询问及更改(m<=1000),更改某个位置的数,询问区间与这个数互质数的和:容斥/离线
摘要:注意到m的范围很小,允许m2,然后重要的起始条件a[i]=i,这样可以k=1的时候用容斥预处理算出答案,然后离线保存在k=2的时候暴力m2更改答案 1 #include 2 #include 3 #include 4 #include 5 #define LL long long 6 using n... 阅读全文

posted @ 2015-04-22 01:11 xiao_xin 阅读(127) 评论(0) 推荐(0)

hdu1695 两个区间各取一个数gcd==k对数:莫比乌斯反演
摘要:首先(1,b)(1,d)->(1,b/k)(1,d/k)转化为互质对数设F(k)为gcd(x,y)为k的倍数的对数->F(k)=(b/k)*(d/k)f[1]=mu[1]*F[1]+mu[2]*F[2]+...mu[m]*F[m]再减去重复计算的,变了F[i]再做一遍== 1 #include 2 ... 阅读全文

posted @ 2015-04-14 03:49 xiao_xin 阅读(256) 评论(0) 推荐(0)

hdu5201 n个桃子分给m个猴子使第一个猴子的桃子严格最大的方案:容斥/组合数/费马小定理求阶层逆元
摘要:先预处理阶层逆元算组合数=首先来枚举第一个猴子得到的桃子x,这样就变成了剩下的n-x个桃子分给m-1个猴子且不能有猴子得到桃子大于x的方案,最后求和>>先来看这样一个简单问题:n个桃子分给m个猴子有多少种方案?很简单隔板法因为允许为0所以是C(x-1+y,y)回到这个问题,再来枚举剩下的m-1个猴子... 阅读全文

posted @ 2015-04-07 23:40 xiao_xin 阅读(525) 评论(0) 推荐(0)

hdu2841(2009多校第三场) gcd(x,y)==1对数
摘要:关键是要能看出来是gcd==1个数===然后就是素数分解容斥定理了。。 1 #include 2 #include 3 #include 4 int k,n,num; 5 int vis[100005],prime[100005],a[10]; 6 void dfs(int now,int flag... 阅读全文

posted @ 2014-12-10 13:31 xiao_xin 阅读(205) 评论(0) 推荐(0)

hdu4059 容斥定理+逆元(longlong计算分开写防溢出)
摘要:1 #include 2 #include 3 #include 4 #define MOD 1000000007 5 long long x,tmp,s2,n; 6 long long a[105],vis[10005],prime[10005]; 7 void exgcd(long lon... 阅读全文

posted @ 2014-10-28 14:34 xiao_xin 阅读(153) 评论(0) 推荐(0)

hdu5072 容斥定理求与一个数不互质的个数,然后化为求问题的反面
摘要:1 #include 2 #include 3 int x,t[100005],d[100005]; 4 int f[100005][10],a[100005]; 5 int vis[355],prime[355]; 6 void dfs1(int tt,int now,int bei) 7 { ... 阅读全文

posted @ 2014-10-22 23:07 xiao_xin 阅读(163) 评论(0) 推荐(0)

hdu1796 容斥原理dfs
摘要:1 #include 2 #include 3 long long int ans,n; 4 int cnt,a[25]; 5 long long int gcd(long long int x,long long int y) 6 { 7 if (y==0) return x; 8 ... 阅读全文

posted @ 2014-09-04 20:40 xiao_xin 阅读(121) 评论(0) 推荐(0)

导航