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