题面: 传送门 思路: 首先,我们需要证明一个结论:d(i*j)等于sigma(gcd(x,y)==1),其中x为i的约数,y为j的约数 对于nm的每一个质因子pi分别考虑,设n = pi^ai + n',m = pi^bi + m' 那么显然质因子pi对d(nm)的贡献为(ai+bi+1) 同理,考虑右边的式子,我们发现质数pi对右侧做的贡献仍然是(ai+bi+1),即如下的(x,y) (pi^ai,1) (pi^(ai-1),1) ..... (1,1) .....(1,pi^(bi-1))…
3994: [SDOI2015]约数个数和 Time Limit: 20 Sec  Memory Limit: 128 MB Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.  Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=5000…
出题人怎么这么不认真啊==明明官方译名是爱蜜莉雅…… 而且我们爱蜜莉雅碳是有英文名哒!是Emilia.你那个aimiliya我实在是无力吐槽…… 不过抱图跑23333首先这很像约数个数和函数诶!但是唯一的不同是,D(1)=1,F(1)=0.那么如果就是D,我们怎么做?原题意思是求以下式子:$Ans\sum\limits_{i=1}^{n}d(gcd(i,n))$我们知道:$D(n)=\sum\limits_{d|n}1$所以:$Ans=\sum\limits_{d|n}\sum\limits_{…
首先要用数学归纳证明一个结论,不过因为我实在是懒得打公式了... 先发代码吧. #include<bits/stdc++.h> #define N 50005 using namespace std; typedef long long ll; ,n,m,mu[N]; ll f[N],ans; void calcmu(){ mu[]=;cnt=;memset(vis,,sizeof(vis)); ;i<=N;i++){ ;} ;j<=cnt;j++){ int t=i*prime[…
这题大概就是提取一下d,然后就跟前面的题目差不多了. #include<bits/stdc++.h> #define N 10000005 using namespace std; typedef long long ll; ],qy[],f[N],prime[N],cnt,mu[N],vis[N]; ll sum[N]; void calcmu(){ cnt=;memset(vis,,]=; ;i<=maxn;i++){ ;} ;j<=cnt;j++){ int t=prime[…
现在感觉反演好多都是套路QAQ…… #include<bits/stdc++.h> using namespace std; ; typedef long long ll; int n,cnt,prime[N],phi[N],mu[N],vis[N]; ll ans,s[N],f[N]; void calcmu(){ memset(prime,,; memset(phi,,,sizeof(mu)); memset(s,,,sizeof(f)); mu[]=;phi[]=;memset(vis,…
也是一个反演. 第一次手动推出一个简单的式子,激动.jpg 原题意思是求:$Ans=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\phi(gcd(i,j))$随意化几步试试:$Ans=\sum\limits_{d=1}^{min(n,m)}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\phi(d)[gcd(i,j)==d]$$Ans=\sum\limits_{d=1}^{min(n,m)}\sum\limits_{i…
快三个月没做反演题了吧…… 感觉高一上学期学的全忘了…… 所以还得从零开始学推式子. # bzoj1011 标签(空格分隔): 未分类 --- 原题意思是求以下式子:$Ans=\sum\limits_{i=1}^{a}\sum\limits_{i=1}^{b}[gcd(i,j)==k]$首先把k拿下来,得到$Ans=\sum\limits_{i=1}^{a/k}\sum\limits_{i=1}^{b/k}[gcd(i,j)==1]$然后考虑mobius函数的性质:$\sum\limits_{d…
#include<bits/stdc++.h> #define N 5000010 #define yql 1000000007 using namespace std; typedef long long ll; ],m[],maxn,vis[N],prime[N]; ,fac[N]; ll f[N],s[N]; inline int read(){ ,x=;char ch; ;}'); +ch-'); return f*x; } inline ll fpow(ll x,ll p){ x%=…
同bzoj3930. (日常盗题图) #include<bits/stdc++.h> #define N 1000010 #define yql 1000000007 #define ll long long using namespace std; int n; ll m,l,r,k;ll f[N]; ll Pow(ll x,int y){ ll ans=; ) ans=ans*x%yql; x=x*x%yql; y>>=; } return ans; } ll read(){…